//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2024 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if canImport(FoundationEssentials)
import FoundationEssentials
#else
import Foundation
#endif
@_exported import SotoCore

/// Service object for interacting with AWS QuickSight service.
///
/// Amazon QuickSight API Reference Amazon Quick Sight is a fully managed, serverless business intelligence service for the Amazon Web Services Cloud that makes it easy to extend data and insights to every user in your organization. This API reference contains documentation for a programming interface that you can use to manage Amazon Quick Sight.
public struct QuickSight: AWSService {
    // MARK: Member variables

    /// Client used for communication with AWS
    public let client: AWSClient
    /// Service configuration
    public let config: AWSServiceConfig

    // MARK: Initialization

    /// Initialize the QuickSight client
    /// - parameters:
    ///     - client: AWSClient used to process requests
    ///     - region: Region of server you want to communicate with. This will override the partition parameter.
    ///     - partition: AWS partition where service resides, standard (.aws), china (.awscn), government (.awsusgov).
    ///     - endpoint: Custom endpoint URL to use instead of standard AWS servers
    ///     - middleware: Middleware chain used to edit requests before they are sent and responses before they are decoded 
    ///     - timeout: Timeout value for HTTP requests
    ///     - byteBufferAllocator: Allocator for ByteBuffers
    ///     - options: Service options
    public init(
        client: AWSClient,
        region: SotoCore.Region? = nil,
        partition: AWSPartition = .aws,
        endpoint: String? = nil,
        middleware: AWSMiddlewareProtocol? = nil,
        timeout: TimeAmount? = nil,
        byteBufferAllocator: ByteBufferAllocator = ByteBufferAllocator(),
        options: AWSServiceConfig.Options = []
    ) {
        self.client = client
        self.config = AWSServiceConfig(
            region: region,
            partition: region?.partition ?? partition,
            serviceName: "QuickSight",
            serviceIdentifier: "quicksight",
            serviceProtocol: .restjson,
            apiVersion: "2018-04-01",
            endpoint: endpoint,
            errorType: QuickSightErrorType.self,
            middleware: middleware,
            timeout: timeout,
            byteBufferAllocator: byteBufferAllocator,
            options: options
        )
    }





    // MARK: API Calls

    /// Creates new reviewed answers for a Q Topic.
    @Sendable
    @inlinable
    public func batchCreateTopicReviewedAnswer(_ input: BatchCreateTopicReviewedAnswerRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> BatchCreateTopicReviewedAnswerResponse {
        try await self.client.execute(
            operation: "BatchCreateTopicReviewedAnswer", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/batch-create-reviewed-answers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates new reviewed answers for a Q Topic.
    ///
    /// Parameters:
    ///   - answers: The definition of the Answers to be created.
    ///   - awsAccountId: The ID of the Amazon Web Services account that you want to create a reviewed answer in.
    ///   - topicId: The ID for the topic reviewed answer that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func batchCreateTopicReviewedAnswer(
        answers: [CreateTopicReviewedAnswer],
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> BatchCreateTopicReviewedAnswerResponse {
        let input = BatchCreateTopicReviewedAnswerRequest(
            answers: answers, 
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.batchCreateTopicReviewedAnswer(input, logger: logger)
    }

    /// Deletes reviewed answers for Q Topic.
    @Sendable
    @inlinable
    public func batchDeleteTopicReviewedAnswer(_ input: BatchDeleteTopicReviewedAnswerRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> BatchDeleteTopicReviewedAnswerResponse {
        try await self.client.execute(
            operation: "BatchDeleteTopicReviewedAnswer", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/batch-delete-reviewed-answers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes reviewed answers for Q Topic.
    ///
    /// Parameters:
    ///   - answerIds: The Answer IDs of the Answers to be deleted.
    ///   - awsAccountId: The ID of the Amazon Web Services account that you want to delete a reviewed answers in.
    ///   - topicId: The ID for the topic reviewed answer that you want to delete. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func batchDeleteTopicReviewedAnswer(
        answerIds: [String]? = nil,
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> BatchDeleteTopicReviewedAnswerResponse {
        let input = BatchDeleteTopicReviewedAnswerRequest(
            answerIds: answerIds, 
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.batchDeleteTopicReviewedAnswer(input, logger: logger)
    }

    /// Cancels an ongoing ingestion of data into SPICE.
    @Sendable
    @inlinable
    public func cancelIngestion(_ input: CancelIngestionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CancelIngestionResponse {
        try await self.client.execute(
            operation: "CancelIngestion", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Cancels an ongoing ingestion of data into SPICE.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset used in the ingestion.
    ///   - ingestionId: An ID for the ingestion.
    ///   - logger: Logger use during operation
    @inlinable
    public func cancelIngestion(
        awsAccountId: String,
        dataSetId: String,
        ingestionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CancelIngestionResponse {
        let input = CancelIngestionRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            ingestionId: ingestionId
        )
        return try await self.cancelIngestion(input, logger: logger)
    }

    /// Creates Amazon Quick Sight customizations. Currently, you can add a custom default theme by using the CreateAccountCustomization or UpdateAccountCustomization API operation. To further customize Amazon Quick Sight by removing Amazon Quick Sight sample assets and videos for all new users, see Customizing Quick Sight in the Amazon Quick Sight User Guide.  You can create customizations for your Amazon Web Services account or, if you specify a namespace, for a Quick Sight namespace instead. Customizations that apply to a namespace always override customizations that apply to an Amazon Web Services account. To find out which customizations apply, use the DescribeAccountCustomization API operation. Before you use the CreateAccountCustomization API operation to add a theme as the namespace default, make sure that you first share the theme with the namespace. If you don't share it with the namespace, the theme isn't visible to your users even if you make it the default theme. To check if the theme is shared, view the current permissions by using the  DescribeThemePermissions  API operation. To share the theme, grant permissions by using the  UpdateThemePermissions  API operation.
    @Sendable
    @inlinable
    public func createAccountCustomization(_ input: CreateAccountCustomizationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateAccountCustomizationResponse {
        try await self.client.execute(
            operation: "CreateAccountCustomization", 
            path: "/accounts/{AwsAccountId}/customizations", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates Amazon Quick Sight customizations. Currently, you can add a custom default theme by using the CreateAccountCustomization or UpdateAccountCustomization API operation. To further customize Amazon Quick Sight by removing Amazon Quick Sight sample assets and videos for all new users, see Customizing Quick Sight in the Amazon Quick Sight User Guide.  You can create customizations for your Amazon Web Services account or, if you specify a namespace, for a Quick Sight namespace instead. Customizations that apply to a namespace always override customizations that apply to an Amazon Web Services account. To find out which customizations apply, use the DescribeAccountCustomization API operation. Before you use the CreateAccountCustomization API operation to add a theme as the namespace default, make sure that you first share the theme with the namespace. If you don't share it with the namespace, the theme isn't visible to your users even if you make it the default theme. To check if the theme is shared, view the current permissions by using the  DescribeThemePermissions  API operation. To share the theme, grant permissions by using the  UpdateThemePermissions  API operation.
    ///
    /// Parameters:
    ///   - accountCustomization: The Quick Sight customizations you're adding. You can add these to an Amazon Web Services account and a QuickSight namespace.  For example, you can add a default theme by setting AccountCustomization to the midnight theme: "AccountCustomization": { "DefaultTheme": "arn:aws:quicksight::aws:theme/MIDNIGHT" }. Or, you can add a custom theme by specifying "AccountCustomization": { "DefaultTheme": "arn:aws:quicksight:us-west-2:111122223333:theme/bdb844d0-0fe9-4d9d-b520-0fe602d93639" }.
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to customize Quick Sight for.
    ///   - namespace: The Quick Sight namespace that you want to add customizations to.
    ///   - tags: A list of the tags that you want to attach to this resource.
    ///   - logger: Logger use during operation
    @inlinable
    public func createAccountCustomization(
        accountCustomization: AccountCustomization,
        awsAccountId: String,
        namespace: String? = nil,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateAccountCustomizationResponse {
        let input = CreateAccountCustomizationRequest(
            accountCustomization: accountCustomization, 
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            tags: tags
        )
        return try await self.createAccountCustomization(input, logger: logger)
    }

    /// Creates an Amazon Quick Sight account, or subscribes to Amazon Quick Sight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see Sign up for Amazon Web Services in the Amazon Quick Sight User Guide. The person who signs up for Amazon Quick Sight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see IAM Policy Examples for Amazon Quick Sight in the Amazon Quick Sight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon Quick Sight, see Passing IAM roles to Amazon Quick Sight in the Amazon Quick Sight User Guide. You can't set default resource access on the new account from the Amazon Quick Sight API. Instead, add default resource access from the Amazon Quick Sight console. For more information about setting default resource access to Amazon Web Services services, see Setting default resource access to Amazon Web Services services in the Amazon Quick Sight User Guide.
    @Sendable
    @inlinable
    public func createAccountSubscription(_ input: CreateAccountSubscriptionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateAccountSubscriptionResponse {
        try await self.client.execute(
            operation: "CreateAccountSubscription", 
            path: "/account/{AwsAccountId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an Amazon Quick Sight account, or subscribes to Amazon Quick Sight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see Sign up for Amazon Web Services in the Amazon Quick Sight User Guide. The person who signs up for Amazon Quick Sight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see IAM Policy Examples for Amazon Quick Sight in the Amazon Quick Sight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon Quick Sight, see Passing IAM roles to Amazon Quick Sight in the Amazon Quick Sight User Guide. You can't set default resource access on the new account from the Amazon Quick Sight API. Instead, add default resource access from the Amazon Quick Sight console. For more information about setting default resource access to Amazon Web Services services, see Setting default resource access to Amazon Web Services services in the Amazon Quick Sight User Guide.
    ///
    /// Parameters:
    ///   - accountName: The name of your Amazon Quick Sight account. This name is unique over all of Amazon Web Services, and it appears only when users sign in. You can't change AccountName value after the Amazon Quick Sight account is created.
    ///   - activeDirectoryName: The name of your Active Directory. This field is required if ACTIVE_DIRECTORY is the selected authentication method of the new Quick Sight account.
    ///   - adminGroup: The admin group associated with your Active Directory or IAM Identity Center account. Either this field or the AdminProGroup field is required if ACTIVE_DIRECTORY or IAM_IDENTITY_CENTER is the selected authentication method of the new Quick Sight account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - adminProGroup: The admin pro group associated with your Active Directory or IAM Identity Center account. Either this field or the AdminGroup field is required if ACTIVE_DIRECTORY or IAM_IDENTITY_CENTER is the selected authentication method of the new Quick Sight account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - authenticationMethod: The method that you want to use to authenticate your Quick Sight account. If you choose ACTIVE_DIRECTORY, provide an ActiveDirectoryName and an AdminGroup associated with your Active Directory. If you choose IAM_IDENTITY_CENTER, provide an AdminGroup associated with your IAM Identity Center account.
    ///   - authorGroup: The author group associated with your Active Directory or IAM Identity Center account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - authorProGroup: The author pro group associated with your Active Directory or IAM Identity Center account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - awsAccountId: The Amazon Web Services account ID of the account that you're using to create your Quick Sight account.
    ///   - contactNumber: A 10-digit phone number for the author of the Amazon Quick Sight account to use for future communications. This field is required if ENTERPPRISE_AND_Q is the selected edition of the new Amazon Quick Sight account.
    ///   - directoryId: The ID of the Active Directory that is associated with your Quick Sight account.
    ///   - edition: The edition of Amazon Quick Sight that you want your account to have. Currently, you can choose from ENTERPRISE or ENTERPRISE_AND_Q. If you choose ENTERPRISE_AND_Q, the following parameters are required:    FirstName     LastName     EmailAddress     ContactNumber
    ///   - emailAddress: The email address of the author of the Amazon Quick Sight account to use for future communications. This field is required if ENTERPPRISE_AND_Q is the selected edition of the new Amazon Quick Sight account.
    ///   - firstName: The first name of the author of the Amazon Quick Sight account to use for future communications. This field is required if ENTERPPRISE_AND_Q is the selected edition of the new Amazon Quick Sight account.
    ///   - iamIdentityCenterInstanceArn: The Amazon Resource Name (ARN) for the IAM Identity Center instance.
    ///   - lastName: The last name of the author of the Amazon Quick Sight account to use for future communications. This field is required if ENTERPPRISE_AND_Q is the selected edition of the new Amazon Quick Sight account.
    ///   - notificationEmail: The email address that you want Quick Sight to send notifications to regarding your Quick Sight account or Quick Sight subscription.
    ///   - readerGroup: The reader group associated with your Active Directory or IAM Identity Center account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - readerProGroup: The reader pro group associated with your Active Directory or IAM Identity Center account. For more information about using IAM Identity Center in Amazon Quick Sight, see Using IAM Identity Center with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide. For more information about using Active Directory in Amazon Quick Sight, see Using Active Directory with Amazon Quick Sight Enterprise Edition in the Amazon Quick Sight User Guide.
    ///   - realm: The realm of the Active Directory that is associated with your Quick Sight account. This field is required if ACTIVE_DIRECTORY is the selected authentication method of the new Quick Sight account.
    ///   - logger: Logger use during operation
    @inlinable
    public func createAccountSubscription(
        accountName: String,
        activeDirectoryName: String? = nil,
        adminGroup: [String]? = nil,
        adminProGroup: [String]? = nil,
        authenticationMethod: AuthenticationMethodOption,
        authorGroup: [String]? = nil,
        authorProGroup: [String]? = nil,
        awsAccountId: String,
        contactNumber: String? = nil,
        directoryId: String? = nil,
        edition: Edition? = nil,
        emailAddress: String? = nil,
        firstName: String? = nil,
        iamIdentityCenterInstanceArn: String? = nil,
        lastName: String? = nil,
        notificationEmail: String,
        readerGroup: [String]? = nil,
        readerProGroup: [String]? = nil,
        realm: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateAccountSubscriptionResponse {
        let input = CreateAccountSubscriptionRequest(
            accountName: accountName, 
            activeDirectoryName: activeDirectoryName, 
            adminGroup: adminGroup, 
            adminProGroup: adminProGroup, 
            authenticationMethod: authenticationMethod, 
            authorGroup: authorGroup, 
            authorProGroup: authorProGroup, 
            awsAccountId: awsAccountId, 
            contactNumber: contactNumber, 
            directoryId: directoryId, 
            edition: edition, 
            emailAddress: emailAddress, 
            firstName: firstName, 
            iamIdentityCenterInstanceArn: iamIdentityCenterInstanceArn, 
            lastName: lastName, 
            notificationEmail: notificationEmail, 
            readerGroup: readerGroup, 
            readerProGroup: readerProGroup, 
            realm: realm
        )
        return try await self.createAccountSubscription(input, logger: logger)
    }

    /// Creates an action connector that enables Amazon Quick Sight to connect to external services and perform actions.
    /// 	          Action connectors support various authentication methods and can be configured with specific actions from supported connector types
    /// 	          like Amazon S3, Salesforce, JIRA.
    @Sendable
    @inlinable
    public func createActionConnector(_ input: CreateActionConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateActionConnectorResponse {
        try await self.client.execute(
            operation: "CreateActionConnector", 
            path: "/accounts/{AwsAccountId}/action-connectors", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an action connector that enables Amazon Quick Sight to connect to external services and perform actions.
    /// 	          Action connectors support various authentication methods and can be configured with specific actions from supported connector types
    /// 	          like Amazon S3, Salesforce, JIRA.
    ///
    /// Parameters:
    ///   - actionConnectorId: A unique identifier for the action connector. This ID must be unique within the Amazon Web Services account. The ActionConnectorId must not
    ///   - authenticationConfig: The authentication configuration for connecting to the external service. This includes the authentication type, base URL, and authentication metadata such as client credentials or API keys.
    ///   - awsAccountId: The Amazon Web Services account ID associated with the action connector.
    ///   - description: An optional description of the action connector.
    ///   - name: A descriptive name for the action connector.
    ///   - permissions: The permissions configuration that defines which users, groups, or namespaces can access this action connector and what operations they can perform.
    ///   - tags: A list of tags to apply to the action connector for resource management and organization.
    ///   - type: The type of action connector.
    ///   - vpcConnectionArn: The ARN of the VPC connection to use for secure connectivity to the external service.
    ///   - logger: Logger use during operation
    @inlinable
    public func createActionConnector(
        actionConnectorId: String,
        authenticationConfig: AuthConfig,
        awsAccountId: String,
        description: String? = nil,
        name: String,
        permissions: [ResourcePermission]? = nil,
        tags: [Tag]? = nil,
        type: ActionConnectorType,
        vpcConnectionArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateActionConnectorResponse {
        let input = CreateActionConnectorRequest(
            actionConnectorId: actionConnectorId, 
            authenticationConfig: authenticationConfig, 
            awsAccountId: awsAccountId, 
            description: description, 
            name: name, 
            permissions: permissions, 
            tags: tags, 
            type: type, 
            vpcConnectionArn: vpcConnectionArn
        )
        return try await self.createActionConnector(input, logger: logger)
    }

    /// Creates an analysis in Amazon Quick Sight. Analyses can be created either from a template or from an AnalysisDefinition.
    @Sendable
    @inlinable
    public func createAnalysis(_ input: CreateAnalysisRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateAnalysisResponse {
        try await self.client.execute(
            operation: "CreateAnalysis", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an analysis in Amazon Quick Sight. Analyses can be created either from a template or from an AnalysisDefinition.
    ///
    /// Parameters:
    ///   - analysisId: The ID for the analysis that you're creating. This ID displays in the URL of the analysis.
    ///   - awsAccountId: The ID of the Amazon Web Services account where you are creating an analysis.
    ///   - definition: The definition of an analysis. A definition is the data model of all features in a Dashboard, Template, or Analysis. Either a SourceEntity or a Definition must be provided in  order for the request to be valid.
    ///   - folderArns: When you create the analysis, Amazon Quick Sight adds the analysis to these folders.
    ///   - name: A descriptive name for the analysis that you're creating. This name displays for the analysis in the Amazon Quick Sight console.
    ///   - parameters: The parameter names and override values that you want to use. An analysis can have  any parameter type, and some parameters might accept multiple values.
    ///   - permissions: A structure that describes the principals and the resource-level permissions on an analysis. You can use the Permissions structure to grant permissions by providing a list of Identity and Access Management (IAM) action information for each principal listed by Amazon Resource Name (ARN).  To specify no permissions, omit Permissions.
    ///   - sourceEntity: A source entity to use for the analysis that you're creating. This metadata structure contains details that describe a source template and one or more datasets. Either a SourceEntity or a Definition must be provided in  order for the request to be valid.
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the analysis.
    ///   - themeArn: The ARN for the theme to apply to the analysis that you're creating. To see the theme in the Amazon Quick Sight console, make sure that you have access to it.
    ///   - validationStrategy: The option to relax the validation needed to create an analysis with definition objects. This skips the validation step for specific errors.
    ///   - logger: Logger use during operation
    @inlinable
    public func createAnalysis(
        analysisId: String,
        awsAccountId: String,
        definition: AnalysisDefinition? = nil,
        folderArns: [String]? = nil,
        name: String,
        parameters: Parameters? = nil,
        permissions: [ResourcePermission]? = nil,
        sourceEntity: AnalysisSourceEntity? = nil,
        tags: [Tag]? = nil,
        themeArn: String? = nil,
        validationStrategy: ValidationStrategy? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateAnalysisResponse {
        let input = CreateAnalysisRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId, 
            definition: definition, 
            folderArns: folderArns, 
            name: name, 
            parameters: parameters, 
            permissions: permissions, 
            sourceEntity: sourceEntity, 
            tags: tags, 
            themeArn: themeArn, 
            validationStrategy: validationStrategy
        )
        return try await self.createAnalysis(input, logger: logger)
    }

    /// Creates an Quick Sight brand.
    @Sendable
    @inlinable
    public func createBrand(_ input: CreateBrandRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateBrandResponse {
        try await self.client.execute(
            operation: "CreateBrand", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an Quick Sight brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandDefinition: The definition of the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - tags: A map of the key-value pairs that are assigned to the brand.
    ///   - logger: Logger use during operation
    @inlinable
    public func createBrand(
        awsAccountId: String,
        brandDefinition: BrandDefinition? = nil,
        brandId: String,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateBrandResponse {
        let input = CreateBrandRequest(
            awsAccountId: awsAccountId, 
            brandDefinition: brandDefinition, 
            brandId: brandId, 
            tags: tags
        )
        return try await self.createBrand(input, logger: logger)
    }

    /// Creates a custom permissions profile.
    @Sendable
    @inlinable
    public func createCustomPermissions(_ input: CreateCustomPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateCustomPermissionsResponse {
        try await self.client.execute(
            operation: "CreateCustomPermissions", 
            path: "/accounts/{AwsAccountId}/custom-permissions", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a custom permissions profile.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that you want to create the custom permissions profile in.
    ///   - capabilities: A set of actions to include in the custom permissions profile.
    ///   - customPermissionsName: The name of the custom permissions profile that you want to create.
    ///   - tags: The tags to associate with the custom permissions profile.
    ///   - logger: Logger use during operation
    @inlinable
    public func createCustomPermissions(
        awsAccountId: String,
        capabilities: Capabilities? = nil,
        customPermissionsName: String,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateCustomPermissionsResponse {
        let input = CreateCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            capabilities: capabilities, 
            customPermissionsName: customPermissionsName, 
            tags: tags
        )
        return try await self.createCustomPermissions(input, logger: logger)
    }

    /// Creates a dashboard from either a template or directly with a DashboardDefinition. To first create a template, see the  CreateTemplate API operation. A dashboard is an entity in Amazon Quick Sight that identifies Amazon Quick Sight reports, created from analyses. You can share Amazon Quick Sight dashboards. With the right permissions, you can create scheduled email reports from them. If you have the correct permissions, you can create a dashboard from a template that exists in a different Amazon Web Services account.
    @Sendable
    @inlinable
    public func createDashboard(_ input: CreateDashboardRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateDashboardResponse {
        try await self.client.execute(
            operation: "CreateDashboard", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a dashboard from either a template or directly with a DashboardDefinition. To first create a template, see the  CreateTemplate API operation. A dashboard is an entity in Amazon Quick Sight that identifies Amazon Quick Sight reports, created from analyses. You can share Amazon Quick Sight dashboards. With the right permissions, you can create scheduled email reports from them. If you have the correct permissions, you can create a dashboard from a template that exists in a different Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account where you want to create the dashboard.
    ///   - dashboardId: The ID for the dashboard, also added to the IAM policy.
    ///   - dashboardPublishOptions: Options for publishing the dashboard when you create it:    AvailabilityStatus for AdHocFilteringOption - This status can be either ENABLED or DISABLED. When this is set to DISABLED, Amazon Quick Sight disables the left filter pane on the published dashboard, which can be used for ad hoc (one-time) filtering. This option is ENABLED by default.     AvailabilityStatus for ExportToCSVOption - This status can be either ENABLED or DISABLED. The visual option to export data to .CSV format isn't enabled when this is set to DISABLED. This option is ENABLED by default.     VisibilityState for SheetControlsOption - This visibility state can be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.     AvailabilityStatus for QuickSuiteActionsOption - This status can be either ENABLED or DISABLED. Features related to Actions in Amazon Quick Suite on dashboards are disabled when this is set to DISABLED. This option is DISABLED by default.    AvailabilityStatus for ExecutiveSummaryOption - This status can be either ENABLED or DISABLED. The option to build an executive summary is disabled when this is set to DISABLED. This option is ENABLED by default.    AvailabilityStatus for DataStoriesSharingOption - This status can be either ENABLED or DISABLED. The option to share a data story is disabled when this is set to DISABLED. This option is ENABLED by default.
    ///   - definition: The definition of a dashboard. A definition is the data model of all features in a Dashboard, Template, or Analysis. Either a SourceEntity or a Definition must be provided in order for the request to be valid.
    ///   - folderArns: When you create the dashboard, Amazon Quick Sight adds the dashboard to these folders.
    ///   - linkEntities: A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
    ///   - linkSharingConfiguration: A structure that contains the permissions of a shareable link to the dashboard.
    ///   - name: The display name of the dashboard.
    ///   - parameters: The parameters for the creation of the dashboard, which you want to use to override the default settings. A dashboard can have any type of parameters, and some parameters might accept multiple values.
    ///   - permissions: A structure that contains the permissions of the dashboard. You can use this structure for granting permissions by providing a list of IAM action information for each principal ARN.  To specify no permissions, omit the permissions list.
    ///   - sourceEntity: The entity that you are using as a source when you create the dashboard. In SourceEntity, you specify the type of object you're using as source. You can only create a dashboard from a template, so you use a SourceTemplate entity. If you need to create a dashboard from an analysis, first convert the analysis to a template by using the  CreateTemplate API operation. For SourceTemplate, specify the Amazon Resource Name (ARN) of the source template. The SourceTemplateARN can contain any Amazon Web Services account and any Amazon Quick Sight-supported Amazon Web Services Region.  Use the DataSetReferences entity within SourceTemplate to list the replacement datasets for the placeholders listed in the original. The schema in each dataset must match its placeholder.  Either a SourceEntity or a Definition must be provided in order for the request to be valid.
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the dashboard.
    ///   - themeArn: The Amazon Resource Name (ARN) of the theme that is being used for this dashboard. If you add a value for this field, it overrides the value that is used in the source entity. The theme ARN must exist in the same Amazon Web Services account where you create the dashboard.
    ///   - validationStrategy: The option to relax the validation needed to create a dashboard with definition objects. This option skips the validation step for specific errors.
    ///   - versionDescription: A description for the first version of the dashboard being created.
    ///   - logger: Logger use during operation
    @inlinable
    public func createDashboard(
        awsAccountId: String,
        dashboardId: String,
        dashboardPublishOptions: DashboardPublishOptions? = nil,
        definition: DashboardVersionDefinition? = nil,
        folderArns: [String]? = nil,
        linkEntities: [String]? = nil,
        linkSharingConfiguration: LinkSharingConfiguration? = nil,
        name: String,
        parameters: Parameters? = nil,
        permissions: [ResourcePermission]? = nil,
        sourceEntity: DashboardSourceEntity? = nil,
        tags: [Tag]? = nil,
        themeArn: String? = nil,
        validationStrategy: ValidationStrategy? = nil,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateDashboardResponse {
        let input = CreateDashboardRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            dashboardPublishOptions: dashboardPublishOptions, 
            definition: definition, 
            folderArns: folderArns, 
            linkEntities: linkEntities, 
            linkSharingConfiguration: linkSharingConfiguration, 
            name: name, 
            parameters: parameters, 
            permissions: permissions, 
            sourceEntity: sourceEntity, 
            tags: tags, 
            themeArn: themeArn, 
            validationStrategy: validationStrategy, 
            versionDescription: versionDescription
        )
        return try await self.createDashboard(input, logger: logger)
    }

    /// Creates a dataset. This operation doesn't support datasets that include uploaded files
    /// 			as a source.
    @Sendable
    @inlinable
    public func createDataSet(_ input: CreateDataSetRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateDataSetResponse {
        try await self.client.execute(
            operation: "CreateDataSet", 
            path: "/accounts/{AwsAccountId}/data-sets", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a dataset. This operation doesn't support datasets that include uploaded files
    /// 			as a source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - columnGroups: Groupings of columns that work together in certain Amazon Quick Sight features.
    ///   - columnLevelPermissionRules: A set of one or more definitions of a  ColumnLevelPermissionRule .
    ///   - dataSetId: An ID for the dataset that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - datasetParameters: The parameter declarations of the dataset.
    ///   - dataSetUsageConfiguration: 
    ///   - fieldFolders: The folder that contains fields and nested subfolders for your dataset.
    ///   - folderArns: When you create the dataset, Amazon Quick Sight adds the dataset to these
    ///   - importMode: Indicates whether you want to import the data into SPICE.
    ///   - logicalTableMap: Configures the combination and transformation of the data from the physical
    ///   - name: The display name for the dataset.
    ///   - performanceConfiguration: The configuration for the performance optimization of the dataset that contains a
    ///   - permissions: A list of resource permissions on the dataset.
    ///   - physicalTableMap: Declares the physical tables that are available in the underlying data sources.
    ///   - rowLevelPermissionDataSet: The row-level security configuration for the data that you want to create.
    ///   - rowLevelPermissionTagConfiguration: The configuration of tags on a dataset to set row-level security. Row-level security
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the
    ///   - useAs: The usage of the dataset. RLS_RULES must be specified for RLS permission
    ///   - logger: Logger use during operation
    @inlinable
    public func createDataSet(
        awsAccountId: String,
        columnGroups: [ColumnGroup]? = nil,
        columnLevelPermissionRules: [ColumnLevelPermissionRule]? = nil,
        dataSetId: String,
        datasetParameters: [DatasetParameter]? = nil,
        dataSetUsageConfiguration: DataSetUsageConfiguration? = nil,
        fieldFolders: [String: FieldFolder]? = nil,
        folderArns: [String]? = nil,
        importMode: DataSetImportMode,
        logicalTableMap: [String: LogicalTable]? = nil,
        name: String,
        performanceConfiguration: PerformanceConfiguration? = nil,
        permissions: [ResourcePermission]? = nil,
        physicalTableMap: [String: PhysicalTable],
        rowLevelPermissionDataSet: RowLevelPermissionDataSet? = nil,
        rowLevelPermissionTagConfiguration: RowLevelPermissionTagConfiguration? = nil,
        tags: [Tag]? = nil,
        useAs: DataSetUseAs? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateDataSetResponse {
        let input = CreateDataSetRequest(
            awsAccountId: awsAccountId, 
            columnGroups: columnGroups, 
            columnLevelPermissionRules: columnLevelPermissionRules, 
            dataSetId: dataSetId, 
            datasetParameters: datasetParameters, 
            dataSetUsageConfiguration: dataSetUsageConfiguration, 
            fieldFolders: fieldFolders, 
            folderArns: folderArns, 
            importMode: importMode, 
            logicalTableMap: logicalTableMap, 
            name: name, 
            performanceConfiguration: performanceConfiguration, 
            permissions: permissions, 
            physicalTableMap: physicalTableMap, 
            rowLevelPermissionDataSet: rowLevelPermissionDataSet, 
            rowLevelPermissionTagConfiguration: rowLevelPermissionTagConfiguration, 
            tags: tags, 
            useAs: useAs
        )
        return try await self.createDataSet(input, logger: logger)
    }

    /// Creates a data source.
    @Sendable
    @inlinable
    public func createDataSource(_ input: CreateDataSourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateDataSourceResponse {
        try await self.client.execute(
            operation: "CreateDataSource", 
            path: "/accounts/{AwsAccountId}/data-sources", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - credentials: The credentials Amazon Quick Sight that uses to connect to your underlying source.
    ///   - dataSourceId: An ID for the data source. This ID is unique per Amazon Web Services Region for each
    ///   - dataSourceParameters: The parameters that Amazon Quick Sight uses to connect to your underlying
    ///   - folderArns: When you create the data source, Amazon Quick Sight adds the data source to these
    ///   - name: A display name for the data source.
    ///   - permissions: A list of resource permissions on the data source.
    ///   - sslProperties: Secure Socket Layer (SSL) properties that apply when Amazon Quick Sight connects to
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the
    ///   - type: The type of the data source. To return a list of all data sources, use
    ///   - vpcConnectionProperties: Use this parameter only when you want Amazon Quick Sight to use a VPC connection when
    ///   - logger: Logger use during operation
    @inlinable
    public func createDataSource(
        awsAccountId: String,
        credentials: DataSourceCredentials? = nil,
        dataSourceId: String,
        dataSourceParameters: DataSourceParameters? = nil,
        folderArns: [String]? = nil,
        name: String,
        permissions: [ResourcePermission]? = nil,
        sslProperties: SslProperties? = nil,
        tags: [Tag]? = nil,
        type: DataSourceType,
        vpcConnectionProperties: VpcConnectionProperties? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateDataSourceResponse {
        let input = CreateDataSourceRequest(
            awsAccountId: awsAccountId, 
            credentials: credentials, 
            dataSourceId: dataSourceId, 
            dataSourceParameters: dataSourceParameters, 
            folderArns: folderArns, 
            name: name, 
            permissions: permissions, 
            sslProperties: sslProperties, 
            tags: tags, 
            type: type, 
            vpcConnectionProperties: vpcConnectionProperties
        )
        return try await self.createDataSource(input, logger: logger)
    }

    /// Creates an empty shared folder.
    @Sendable
    @inlinable
    public func createFolder(_ input: CreateFolderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateFolderResponse {
        try await self.client.execute(
            operation: "CreateFolder", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an empty shared folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account where you want to create the folder.
    ///   - folderId: The ID of the folder.
    ///   - folderType: The type of folder. By default, folderType is SHARED.
    ///   - name: The name of the folder.
    ///   - parentFolderArn: The Amazon Resource Name (ARN) for the parent folder.  ParentFolderArn can be null. An empty parentFolderArn creates a root-level folder.
    ///   - permissions: A structure that describes the principals and the resource-level permissions of a folder. To specify no permissions, omit Permissions.
    ///   - sharingModel: An optional parameter that determines the sharing scope of the folder. The default value for this parameter is ACCOUNT.
    ///   - tags: Tags for the folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func createFolder(
        awsAccountId: String,
        folderId: String,
        folderType: FolderType? = nil,
        name: String? = nil,
        parentFolderArn: String? = nil,
        permissions: [ResourcePermission]? = nil,
        sharingModel: SharingModel? = nil,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateFolderResponse {
        let input = CreateFolderRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            folderType: folderType, 
            name: name, 
            parentFolderArn: parentFolderArn, 
            permissions: permissions, 
            sharingModel: sharingModel, 
            tags: tags
        )
        return try await self.createFolder(input, logger: logger)
    }

    /// Adds an asset, such as a dashboard, analysis, or dataset into a folder.
    @Sendable
    @inlinable
    public func createFolderMembership(_ input: CreateFolderMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateFolderMembershipResponse {
        try await self.client.execute(
            operation: "CreateFolderMembership", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/members/{MemberType}/{MemberId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds an asset, such as a dashboard, analysis, or dataset into a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - memberId: The ID of the asset that you want to add to the folder.
    ///   - memberType: The member type of the asset that you want to add to a folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func createFolderMembership(
        awsAccountId: String,
        folderId: String,
        memberId: String,
        memberType: MemberType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateFolderMembershipResponse {
        let input = CreateFolderMembershipRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            memberId: memberId, 
            memberType: memberType
        )
        return try await self.createFolderMembership(input, logger: logger)
    }

    /// Use the CreateGroup operation to create a group in   Quick Sight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact Amazon Web Services Support. The permissions resource is
    /// 					arn:aws:quicksight:::group/default/ . The response is a group object.
    @Sendable
    @inlinable
    public func createGroup(_ input: CreateGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateGroupResponse {
        try await self.client.execute(
            operation: "CreateGroup", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the CreateGroup operation to create a group in   Quick Sight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact Amazon Web Services Support. The permissions resource is
    /// 					arn:aws:quicksight:::group/default/ . The response is a group object.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - description: A description for the group that you want to create.
    ///   - groupName: A name for the group that you want to create.
    ///   - namespace: The namespace that you want the group to be a part of.
    ///   - logger: Logger use during operation
    @inlinable
    public func createGroup(
        awsAccountId: String,
        description: String? = nil,
        groupName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateGroupResponse {
        let input = CreateGroupRequest(
            awsAccountId: awsAccountId, 
            description: description, 
            groupName: groupName, 
            namespace: namespace
        )
        return try await self.createGroup(input, logger: logger)
    }

    /// Adds an Amazon Quick Sight user to an Amazon Quick Sight group.
    @Sendable
    @inlinable
    public func createGroupMembership(_ input: CreateGroupMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateGroupMembershipResponse {
        try await self.client.execute(
            operation: "CreateGroupMembership", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds an Amazon Quick Sight user to an Amazon Quick Sight group.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to add the user to.
    ///   - memberName: The name of the user that you want to add to the group membership.
    ///   - namespace: The namespace that you want the user to be a part of.
    ///   - logger: Logger use during operation
    @inlinable
    public func createGroupMembership(
        awsAccountId: String,
        groupName: String,
        memberName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateGroupMembershipResponse {
        let input = CreateGroupMembershipRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            memberName: memberName, 
            namespace: namespace
        )
        return try await self.createGroupMembership(input, logger: logger)
    }

    /// Creates an assignment with one specified IAM policy, identified by its
    /// 			Amazon Resource Name (ARN). This policy assignment is attached to the specified groups
    /// 			or users of Amazon Quick Sight. Assignment names are unique per Amazon Web Services
    /// 			account. To avoid overwriting rules in other namespaces, use assignment names that are
    /// 			unique.
    @Sendable
    @inlinable
    public func createIAMPolicyAssignment(_ input: CreateIAMPolicyAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateIAMPolicyAssignmentResponse {
        try await self.client.execute(
            operation: "CreateIAMPolicyAssignment", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an assignment with one specified IAM policy, identified by its
    /// 			Amazon Resource Name (ARN). This policy assignment is attached to the specified groups
    /// 			or users of Amazon Quick Sight. Assignment names are unique per Amazon Web Services
    /// 			account. To avoid overwriting rules in other namespaces, use assignment names that are
    /// 			unique.
    ///
    /// Parameters:
    ///   - assignmentName: The name of the assignment, also called a rule.
    ///   - assignmentStatus: The status of the assignment. Possible values are as follows:    ENABLED - Anything specified in this assignment is used when
    ///   - awsAccountId: The ID of the Amazon Web Services account where you want to assign an IAM policy to Amazon Quick Sight users or groups.
    ///   - identities: The Amazon Quick Sight users, groups, or both that you want to assign the policy
    ///   - namespace: The namespace that contains the assignment.
    ///   - policyArn: The ARN for the IAM policy to apply to the Amazon Quick Sight users and
    ///   - logger: Logger use during operation
    @inlinable
    public func createIAMPolicyAssignment(
        assignmentName: String,
        assignmentStatus: AssignmentStatus,
        awsAccountId: String,
        identities: [String: [String]]? = nil,
        namespace: String,
        policyArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateIAMPolicyAssignmentResponse {
        let input = CreateIAMPolicyAssignmentRequest(
            assignmentName: assignmentName, 
            assignmentStatus: assignmentStatus, 
            awsAccountId: awsAccountId, 
            identities: identities, 
            namespace: namespace, 
            policyArn: policyArn
        )
        return try await self.createIAMPolicyAssignment(input, logger: logger)
    }

    /// Creates and starts a new SPICE ingestion for a dataset. You can manually refresh datasets in
    /// 			an Enterprise edition account 32 times in a 24-hour period. You can manually refresh
    /// 			datasets in a Standard edition account 8 times in a 24-hour period. Each 24-hour period
    /// 			is measured starting 24 hours before the current date and time. Any ingestions operating on tagged datasets inherit the same tags automatically for use in
    /// 			access control. For an example, see How do I create an IAM policy to control access to Amazon EC2 resources using
    /// 				tags? in the Amazon Web Services Knowledge Center. Tags are visible on the tagged dataset, but not on the ingestion resource.
    @Sendable
    @inlinable
    public func createIngestion(_ input: CreateIngestionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateIngestionResponse {
        try await self.client.execute(
            operation: "CreateIngestion", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates and starts a new SPICE ingestion for a dataset. You can manually refresh datasets in
    /// 			an Enterprise edition account 32 times in a 24-hour period. You can manually refresh
    /// 			datasets in a Standard edition account 8 times in a 24-hour period. Each 24-hour period
    /// 			is measured starting 24 hours before the current date and time. Any ingestions operating on tagged datasets inherit the same tags automatically for use in
    /// 			access control. For an example, see How do I create an IAM policy to control access to Amazon EC2 resources using
    /// 				tags? in the Amazon Web Services Knowledge Center. Tags are visible on the tagged dataset, but not on the ingestion resource.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset used in the ingestion.
    ///   - ingestionId: An ID for the ingestion.
    ///   - ingestionType: The type of ingestion that you want to create.
    ///   - logger: Logger use during operation
    @inlinable
    public func createIngestion(
        awsAccountId: String,
        dataSetId: String,
        ingestionId: String,
        ingestionType: IngestionType? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateIngestionResponse {
        let input = CreateIngestionRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            ingestionId: ingestionId, 
            ingestionType: ingestionType
        )
        return try await self.createIngestion(input, logger: logger)
    }

    /// (Enterprise edition only) Creates a new namespace for you to use with Amazon Quick Sight. A namespace allows you to isolate the Quick Sight users and groups that are registered for that namespace. Users that access the namespace can share assets only with other users or groups in the same namespace. They can't see users and groups in other namespaces. You can create a namespace after your Amazon Web Services account is subscribed to Quick Sight. The namespace must be unique within the Amazon Web Services account. By default, there is a limit of 100 namespaces per Amazon Web Services account. To increase your limit, create a ticket with Amazon Web Services Support.
    @Sendable
    @inlinable
    public func createNamespace(_ input: CreateNamespaceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateNamespaceResponse {
        try await self.client.execute(
            operation: "CreateNamespace", 
            path: "/accounts/{AwsAccountId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// (Enterprise edition only) Creates a new namespace for you to use with Amazon Quick Sight. A namespace allows you to isolate the Quick Sight users and groups that are registered for that namespace. Users that access the namespace can share assets only with other users or groups in the same namespace. They can't see users and groups in other namespaces. You can create a namespace after your Amazon Web Services account is subscribed to Quick Sight. The namespace must be unique within the Amazon Web Services account. By default, there is a limit of 100 namespaces per Amazon Web Services account. To increase your limit, create a ticket with Amazon Web Services Support.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create the Quick Sight namespace in.
    ///   - identityStore: Specifies the type of your user identity directory. Currently, this supports users with an identity type of QUICKSIGHT.
    ///   - namespace: The name that you want to use to describe the new namespace.
    ///   - tags: The tags that you want to associate with the namespace that you're creating.
    ///   - logger: Logger use during operation
    @inlinable
    public func createNamespace(
        awsAccountId: String,
        identityStore: IdentityStore,
        namespace: String,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateNamespaceResponse {
        let input = CreateNamespaceRequest(
            awsAccountId: awsAccountId, 
            identityStore: identityStore, 
            namespace: namespace, 
            tags: tags
        )
        return try await self.createNamespace(input, logger: logger)
    }

    /// Creates a refresh schedule for a dataset. You can create up to 5 different schedules for a single dataset.
    @Sendable
    @inlinable
    public func createRefreshSchedule(_ input: CreateRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateRefreshScheduleResponse {
        try await self.client.execute(
            operation: "CreateRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a refresh schedule for a dataset. You can create up to 5 different schedules for a single dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - schedule: The refresh schedule.
    ///   - logger: Logger use during operation
    @inlinable
    public func createRefreshSchedule(
        awsAccountId: String,
        dataSetId: String,
        schedule: RefreshSchedule,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateRefreshScheduleResponse {
        let input = CreateRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            schedule: schedule
        )
        return try await self.createRefreshSchedule(input, logger: logger)
    }

    /// Use CreateRoleMembership to add an existing Quick Sight group to an existing role.
    @Sendable
    @inlinable
    public func createRoleMembership(_ input: CreateRoleMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateRoleMembershipResponse {
        try await self.client.execute(
            operation: "CreateRoleMembership", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members/{MemberName}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use CreateRoleMembership to add an existing Quick Sight group to an existing role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - memberName: The name of the group that you want to add to the role.
    ///   - namespace: The namespace that the role belongs to.
    ///   - role: The role that you want to add a group to.
    ///   - logger: Logger use during operation
    @inlinable
    public func createRoleMembership(
        awsAccountId: String,
        memberName: String,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateRoleMembershipResponse {
        let input = CreateRoleMembershipRequest(
            awsAccountId: awsAccountId, 
            memberName: memberName, 
            namespace: namespace, 
            role: role
        )
        return try await self.createRoleMembership(input, logger: logger)
    }

    /// Creates a template either from a TemplateDefinition or from an existing Quick Sight analysis or template. You can use the resulting
    /// 			template to create additional dashboards, templates, or analyses. A template is an entity in Quick Sight that encapsulates the metadata
    /// 			required to create an analysis and that you can use to create s dashboard. A template adds
    /// 			a layer of abstraction by using placeholders to replace the dataset associated with the
    /// 			analysis. You can use templates to create dashboards by replacing dataset placeholders
    /// 			with datasets that follow the same schema that was used to create the source analysis
    /// 			and template.
    @Sendable
    @inlinable
    public func createTemplate(_ input: CreateTemplateRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateTemplateResponse {
        try await self.client.execute(
            operation: "CreateTemplate", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a template either from a TemplateDefinition or from an existing Quick Sight analysis or template. You can use the resulting
    /// 			template to create additional dashboards, templates, or analyses. A template is an entity in Quick Sight that encapsulates the metadata
    /// 			required to create an analysis and that you can use to create s dashboard. A template adds
    /// 			a layer of abstraction by using placeholders to replace the dataset associated with the
    /// 			analysis. You can use templates to create dashboards by replacing dataset placeholders
    /// 			with datasets that follow the same schema that was used to create the source analysis
    /// 			and template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. You use the ID for the Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - definition: The definition of a template. A definition is the data model of all features in a Dashboard, Template, or Analysis. Either a SourceEntity or a Definition must be provided in
    ///   - name: A display name for the template.
    ///   - permissions: A list of resource permissions to be set on the template.
    ///   - sourceEntity: The entity that you are using as a source when you create the template. In
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the resource.
    ///   - templateId: An ID for the template that you want to create. This template is unique per Amazon Web Services Region; in
    ///   - validationStrategy: TThe option to relax the validation needed to create a template with definition objects. This skips the validation step for specific errors.
    ///   - versionDescription: A description of the current template version being created. This API operation creates the
    ///   - logger: Logger use during operation
    @inlinable
    public func createTemplate(
        awsAccountId: String,
        definition: TemplateVersionDefinition? = nil,
        name: String? = nil,
        permissions: [ResourcePermission]? = nil,
        sourceEntity: TemplateSourceEntity? = nil,
        tags: [Tag]? = nil,
        templateId: String,
        validationStrategy: ValidationStrategy? = nil,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateTemplateResponse {
        let input = CreateTemplateRequest(
            awsAccountId: awsAccountId, 
            definition: definition, 
            name: name, 
            permissions: permissions, 
            sourceEntity: sourceEntity, 
            tags: tags, 
            templateId: templateId, 
            validationStrategy: validationStrategy, 
            versionDescription: versionDescription
        )
        return try await self.createTemplate(input, logger: logger)
    }

    /// Creates a template alias for a template.
    @Sendable
    @inlinable
    public func createTemplateAlias(_ input: CreateTemplateAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateTemplateAliasResponse {
        try await self.client.execute(
            operation: "CreateTemplateAlias", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a template alias for a template.
    ///
    /// Parameters:
    ///   - aliasName: The name that you want to give to the template alias that you're creating. Don't start the
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template that you creating an alias for.
    ///   - templateId: An ID for the template.
    ///   - templateVersionNumber: The version number of the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func createTemplateAlias(
        aliasName: String,
        awsAccountId: String,
        templateId: String,
        templateVersionNumber: Int64,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateTemplateAliasResponse {
        let input = CreateTemplateAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId, 
            templateVersionNumber: templateVersionNumber
        )
        return try await self.createTemplateAlias(input, logger: logger)
    }

    /// Creates a theme. A theme is set of configuration options for color and layout.
    /// 			Themes apply to analyses and dashboards. For more information, see Using
    /// 			Themes in Amazon Quick Sight in the Amazon Quick Sight User Guide.
    @Sendable
    @inlinable
    public func createTheme(_ input: CreateThemeRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateThemeResponse {
        try await self.client.execute(
            operation: "CreateTheme", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a theme. A theme is set of configuration options for color and layout.
    /// 			Themes apply to analyses and dashboards. For more information, see Using
    /// 			Themes in Amazon Quick Sight in the Amazon Quick Sight User Guide.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account where you want to store the new theme.
    ///   - baseThemeId: The ID of the theme that a custom theme will inherit from. All themes inherit from one of
    ///   - configuration: The theme configuration, which contains the theme display properties.
    ///   - name: A display name for the theme.
    ///   - permissions: A valid grouping of resource permissions to apply to the new theme.
    ///   - tags: A map of the key-value pairs for the resource tag or tags that you want to add to the
    ///   - themeId: An ID for the theme that you want to create. The theme ID is unique per Amazon Web Services Region in
    ///   - versionDescription: A description of the first version of the theme that you're creating. Every time
    ///   - logger: Logger use during operation
    @inlinable
    public func createTheme(
        awsAccountId: String,
        baseThemeId: String,
        configuration: ThemeConfiguration,
        name: String,
        permissions: [ResourcePermission]? = nil,
        tags: [Tag]? = nil,
        themeId: String,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateThemeResponse {
        let input = CreateThemeRequest(
            awsAccountId: awsAccountId, 
            baseThemeId: baseThemeId, 
            configuration: configuration, 
            name: name, 
            permissions: permissions, 
            tags: tags, 
            themeId: themeId, 
            versionDescription: versionDescription
        )
        return try await self.createTheme(input, logger: logger)
    }

    /// Creates a theme alias for a theme.
    @Sendable
    @inlinable
    public func createThemeAlias(_ input: CreateThemeAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateThemeAliasResponse {
        try await self.client.execute(
            operation: "CreateThemeAlias", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a theme alias for a theme.
    ///
    /// Parameters:
    ///   - aliasName: The name that you want to give to the theme alias that you are creating. The
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme for the new theme alias.
    ///   - themeId: An ID for the theme alias.
    ///   - themeVersionNumber: The version number of the theme.
    ///   - logger: Logger use during operation
    @inlinable
    public func createThemeAlias(
        aliasName: String,
        awsAccountId: String,
        themeId: String,
        themeVersionNumber: Int64,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateThemeAliasResponse {
        let input = CreateThemeAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            themeId: themeId, 
            themeVersionNumber: themeVersionNumber
        )
        return try await self.createThemeAlias(input, logger: logger)
    }

    /// Creates a new Q topic.
    @Sendable
    @inlinable
    public func createTopic(_ input: CreateTopicRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateTopicResponse {
        try await self.client.execute(
            operation: "CreateTopic", 
            path: "/accounts/{AwsAccountId}/topics", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a new Q topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that you want to create a topic in.
    ///   - customInstructions: Custom instructions for the topic.
    ///   - folderArns: The Folder ARN of the folder that you want the topic to reside in.
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags that are assigned to the dataset.
    ///   - topic: The definition of a topic to create.
    ///   - topicId: The ID for the topic that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func createTopic(
        awsAccountId: String,
        customInstructions: CustomInstructions? = nil,
        folderArns: [String]? = nil,
        tags: [Tag]? = nil,
        topic: TopicDetails,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateTopicResponse {
        let input = CreateTopicRequest(
            awsAccountId: awsAccountId, 
            customInstructions: customInstructions, 
            folderArns: folderArns, 
            tags: tags, 
            topic: topic, 
            topicId: topicId
        )
        return try await self.createTopic(input, logger: logger)
    }

    /// Creates a topic refresh schedule.
    @Sendable
    @inlinable
    public func createTopicRefreshSchedule(_ input: CreateTopicRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateTopicRefreshScheduleResponse {
        try await self.client.execute(
            operation: "CreateTopicRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/schedules", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a topic refresh schedule.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic you're creating a refresh schedule for.
    ///   - datasetArn: The Amazon Resource Name (ARN) of the dataset.
    ///   - datasetName: The name of the dataset.
    ///   - refreshSchedule: The definition of a refresh schedule.
    ///   - topicId: The ID of the topic that you want to modify. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func createTopicRefreshSchedule(
        awsAccountId: String,
        datasetArn: String,
        datasetName: String? = nil,
        refreshSchedule: TopicRefreshSchedule,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateTopicRefreshScheduleResponse {
        let input = CreateTopicRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            datasetArn: datasetArn, 
            datasetName: datasetName, 
            refreshSchedule: refreshSchedule, 
            topicId: topicId
        )
        return try await self.createTopicRefreshSchedule(input, logger: logger)
    }

    /// Creates a new VPC connection.
    @Sendable
    @inlinable
    public func createVPCConnection(_ input: CreateVPCConnectionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateVPCConnectionResponse {
        try await self.client.execute(
            operation: "CreateVPCConnection", 
            path: "/accounts/{AwsAccountId}/vpc-connections", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a new VPC connection.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account where you want to create a new VPC
    ///   - dnsResolvers: A list of IP addresses of DNS resolver endpoints for the VPC connection.
    ///   - name: The display name for the VPC connection.
    ///   - roleArn: The IAM role to associate with the VPC connection.
    ///   - securityGroupIds: A list of security group IDs for the VPC connection.
    ///   - subnetIds: A list of subnet IDs for the VPC connection.
    ///   - tags: A map of the key-value pairs for the resource tag or tags assigned to the VPC
    ///   - vpcConnectionId: The ID of the VPC connection that
    ///   - logger: Logger use during operation
    @inlinable
    public func createVPCConnection(
        awsAccountId: String,
        dnsResolvers: [String]? = nil,
        name: String,
        roleArn: String,
        securityGroupIds: [String],
        subnetIds: [String],
        tags: [Tag]? = nil,
        vpcConnectionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateVPCConnectionResponse {
        let input = CreateVPCConnectionRequest(
            awsAccountId: awsAccountId, 
            dnsResolvers: dnsResolvers, 
            name: name, 
            roleArn: roleArn, 
            securityGroupIds: securityGroupIds, 
            subnetIds: subnetIds, 
            tags: tags, 
            vpcConnectionId: vpcConnectionId
        )
        return try await self.createVPCConnection(input, logger: logger)
    }

    /// Unapplies a custom permissions profile from an account.
    @Sendable
    @inlinable
    public func deleteAccountCustomPermission(_ input: DeleteAccountCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteAccountCustomPermissionResponse {
        try await self.client.execute(
            operation: "DeleteAccountCustomPermission", 
            path: "/accounts/{AwsAccountId}/custom-permission", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Unapplies a custom permissions profile from an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account from which you want to unapply the custom permissions profile.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteAccountCustomPermission(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteAccountCustomPermissionResponse {
        let input = DeleteAccountCustomPermissionRequest(
            awsAccountId: awsAccountId
        )
        return try await self.deleteAccountCustomPermission(input, logger: logger)
    }

    ///  This API permanently deletes all Quick Sight customizations for the specified Amazon Web Services account and namespace. When you delete account customizations:   All customizations are removed including themes, branding, and visual settings   This action cannot be undone through the API   Users will see default Quick Sight styling after customizations are deleted    Before proceeding: Ensure you have backups of any custom themes or branding elements you may want to recreate.  Deletes all Amazon Quick Sight customizations for the specified Amazon Web Services account and Quick Sight namespace.
    @Sendable
    @inlinable
    public func deleteAccountCustomization(_ input: DeleteAccountCustomizationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteAccountCustomizationResponse {
        try await self.client.execute(
            operation: "DeleteAccountCustomization", 
            path: "/accounts/{AwsAccountId}/customizations", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    ///  This API permanently deletes all Quick Sight customizations for the specified Amazon Web Services account and namespace. When you delete account customizations:   All customizations are removed including themes, branding, and visual settings   This action cannot be undone through the API   Users will see default Quick Sight styling after customizations are deleted    Before proceeding: Ensure you have backups of any custom themes or branding elements you may want to recreate.  Deletes all Amazon Quick Sight customizations for the specified Amazon Web Services account and Quick Sight namespace.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to delete Quick Sight customizations from.
    ///   - namespace: The Quick Sight namespace that you're deleting the customizations from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteAccountCustomization(
        awsAccountId: String,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteAccountCustomizationResponse {
        let input = DeleteAccountCustomizationRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.deleteAccountCustomization(input, logger: logger)
    }

    ///  Deleting your Quick Sight account subscription has permanent, irreversible consequences across all Amazon Web Services regions:   Global deletion – Running this operation from any single region will delete your Quick Sight account and all data in every Amazon Web Services region where you have Quick Sight resources.   Complete data loss – All dashboards, analyses, datasets, data sources, and custom visuals will be permanently deleted across all regions.   Embedded content failure – All embedded dashboards and visuals in your applications will immediately stop working and display errors to end users.   Shared resources removed – All shared dashboards, folders, and resources will become inaccessible to other users and external recipients.   User access terminated – All Quick Sight users in your account will lose access immediately, including authors, readers, and administrators.    No recovery possible – Once deleted, your Quick Sight account and all associated data cannot be restored.   Consider exporting critical dashboards and data before proceeding with account deletion.  Use the DeleteAccountSubscription operation to delete an Quick Sight account. This operation will result in an error message if you have configured your account termination protection settings to True. To change this setting and delete your account, call the UpdateAccountSettings API and set the value of the TerminationProtectionEnabled parameter to False, then make another call to the DeleteAccountSubscription API.
    @Sendable
    @inlinable
    public func deleteAccountSubscription(_ input: DeleteAccountSubscriptionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteAccountSubscriptionResponse {
        try await self.client.execute(
            operation: "DeleteAccountSubscription", 
            path: "/account/{AwsAccountId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    ///  Deleting your Quick Sight account subscription has permanent, irreversible consequences across all Amazon Web Services regions:   Global deletion – Running this operation from any single region will delete your Quick Sight account and all data in every Amazon Web Services region where you have Quick Sight resources.   Complete data loss – All dashboards, analyses, datasets, data sources, and custom visuals will be permanently deleted across all regions.   Embedded content failure – All embedded dashboards and visuals in your applications will immediately stop working and display errors to end users.   Shared resources removed – All shared dashboards, folders, and resources will become inaccessible to other users and external recipients.   User access terminated – All Quick Sight users in your account will lose access immediately, including authors, readers, and administrators.    No recovery possible – Once deleted, your Quick Sight account and all associated data cannot be restored.   Consider exporting critical dashboards and data before proceeding with account deletion.  Use the DeleteAccountSubscription operation to delete an Quick Sight account. This operation will result in an error message if you have configured your account termination protection settings to True. To change this setting and delete your account, call the UpdateAccountSettings API and set the value of the TerminationProtectionEnabled parameter to False, then make another call to the DeleteAccountSubscription API.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteAccountSubscription(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteAccountSubscriptionResponse {
        let input = DeleteAccountSubscriptionRequest(
            awsAccountId: awsAccountId
        )
        return try await self.deleteAccountSubscription(input, logger: logger)
    }

    /// Hard deletes an action connector, making it unrecoverable. This operation removes the connector and all its associated configurations. Any resources currently using this action connector will no longer be able to perform actions through it.
    @Sendable
    @inlinable
    public func deleteActionConnector(_ input: DeleteActionConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteActionConnectorResponse {
        try await self.client.execute(
            operation: "DeleteActionConnector", 
            path: "/accounts/{AwsAccountId}/action-connectors/{ActionConnectorId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Hard deletes an action connector, making it unrecoverable. This operation removes the connector and all its associated configurations. Any resources currently using this action connector will no longer be able to perform actions through it.
    ///
    /// Parameters:
    ///   - actionConnectorId: The unique identifier of the action connector to delete.
    ///   - awsAccountId: The Amazon Web Services account ID that contains the action connector to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteActionConnector(
        actionConnectorId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteActionConnectorResponse {
        let input = DeleteActionConnectorRequest(
            actionConnectorId: actionConnectorId, 
            awsAccountId: awsAccountId
        )
        return try await self.deleteActionConnector(input, logger: logger)
    }

    /// Deletes an analysis from Amazon Quick Sight. You can optionally include a recovery window during which you can restore the analysis. If you don't specify a recovery window value, the operation defaults to 30 days. Amazon Quick Sight attaches a DeletionTime stamp to the response that specifies the end of the recovery window. At the end of the recovery window, Amazon Quick Sight deletes the analysis permanently. At any time before recovery window ends, you can use the RestoreAnalysis API operation to remove the DeletionTime stamp and cancel the deletion of the analysis. The analysis remains visible in the API until it's deleted, so you can describe it but you can't make a template from it. An analysis that's scheduled for deletion isn't accessible in the Amazon Quick Sight console. To access it in the console, restore it. Deleting an analysis doesn't delete the dashboards that you publish from it.
    @Sendable
    @inlinable
    public func deleteAnalysis(_ input: DeleteAnalysisRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteAnalysisResponse {
        try await self.client.execute(
            operation: "DeleteAnalysis", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes an analysis from Amazon Quick Sight. You can optionally include a recovery window during which you can restore the analysis. If you don't specify a recovery window value, the operation defaults to 30 days. Amazon Quick Sight attaches a DeletionTime stamp to the response that specifies the end of the recovery window. At the end of the recovery window, Amazon Quick Sight deletes the analysis permanently. At any time before recovery window ends, you can use the RestoreAnalysis API operation to remove the DeletionTime stamp and cancel the deletion of the analysis. The analysis remains visible in the API until it's deleted, so you can describe it but you can't make a template from it. An analysis that's scheduled for deletion isn't accessible in the Amazon Quick Sight console. To access it in the console, restore it. Deleting an analysis doesn't delete the dashboards that you publish from it.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis that you're deleting.
    ///   - awsAccountId: The ID of the Amazon Web Services account where you want to delete an analysis.
    ///   - forceDeleteWithoutRecovery: This option defaults to the value NoForceDeleteWithoutRecovery. To immediately delete the analysis, add the ForceDeleteWithoutRecovery option. You can't restore an analysis after it's deleted.
    ///   - recoveryWindowInDays: A value that specifies the number of days that Amazon Quick Sight waits before it deletes the analysis. You can't use this parameter with the ForceDeleteWithoutRecovery option in the same API call. The default value is 30.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteAnalysis(
        analysisId: String,
        awsAccountId: String,
        forceDeleteWithoutRecovery: Bool? = nil,
        recoveryWindowInDays: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteAnalysisResponse {
        let input = DeleteAnalysisRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId, 
            forceDeleteWithoutRecovery: forceDeleteWithoutRecovery, 
            recoveryWindowInDays: recoveryWindowInDays
        )
        return try await self.deleteAnalysis(input, logger: logger)
    }

    ///  This API permanently deletes the specified Quick Sight brand. When you delete a brand:   The brand and all its associated branding elements are permanently removed   Any applications or dashboards using this brand will revert to default styling   This action cannot be undone through the API    Before proceeding: Verify that the brand is no longer needed and consider the impact on any applications currently using this brand.  Deletes an Quick Sight brand.
    @Sendable
    @inlinable
    public func deleteBrand(_ input: DeleteBrandRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteBrandResponse {
        try await self.client.execute(
            operation: "DeleteBrand", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    ///  This API permanently deletes the specified Quick Sight brand. When you delete a brand:   The brand and all its associated branding elements are permanently removed   Any applications or dashboards using this brand will revert to default styling   This action cannot be undone through the API    Before proceeding: Verify that the brand is no longer needed and consider the impact on any applications currently using this brand.  Deletes an Quick Sight brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteBrand(
        awsAccountId: String,
        brandId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteBrandResponse {
        let input = DeleteBrandRequest(
            awsAccountId: awsAccountId, 
            brandId: brandId
        )
        return try await self.deleteBrand(input, logger: logger)
    }

    /// Deletes a brand assignment.
    @Sendable
    @inlinable
    public func deleteBrandAssignment(_ input: DeleteBrandAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteBrandAssignmentResponse {
        try await self.client.execute(
            operation: "DeleteBrandAssignment", 
            path: "/accounts/{AwsAccountId}/brandassignments", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a brand assignment.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand assignment.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteBrandAssignment(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteBrandAssignmentResponse {
        let input = DeleteBrandAssignmentRequest(
            awsAccountId: awsAccountId
        )
        return try await self.deleteBrandAssignment(input, logger: logger)
    }

    /// Deletes a custom permissions profile.
    @Sendable
    @inlinable
    public func deleteCustomPermissions(_ input: DeleteCustomPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteCustomPermissionsResponse {
        try await self.client.execute(
            operation: "DeleteCustomPermissions", 
            path: "/accounts/{AwsAccountId}/custom-permissions/{CustomPermissionsName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a custom permissions profile.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permissions profile that you want to delete.
    ///   - customPermissionsName: The name of the custom permissions profile that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteCustomPermissions(
        awsAccountId: String,
        customPermissionsName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteCustomPermissionsResponse {
        let input = DeleteCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            customPermissionsName: customPermissionsName
        )
        return try await self.deleteCustomPermissions(input, logger: logger)
    }

    /// Deletes a dashboard.
    @Sendable
    @inlinable
    public func deleteDashboard(_ input: DeleteDashboardRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteDashboardResponse {
        try await self.client.execute(
            operation: "DeleteDashboard", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a dashboard.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're deleting.
    ///   - dashboardId: The ID for the dashboard.
    ///   - versionNumber: The version number of the dashboard. If the version number property is provided, only the specified version of the dashboard is deleted.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteDashboard(
        awsAccountId: String,
        dashboardId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteDashboardResponse {
        let input = DeleteDashboardRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            versionNumber: versionNumber
        )
        return try await self.deleteDashboard(input, logger: logger)
    }

    /// Deletes a dataset.
    @Sendable
    @inlinable
    public func deleteDataSet(_ input: DeleteDataSetRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteDataSetResponse {
        try await self.client.execute(
            operation: "DeleteDataSet", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID for the dataset that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteDataSet(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteDataSetResponse {
        let input = DeleteDataSetRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.deleteDataSet(input, logger: logger)
    }

    /// Deletes the dataset refresh properties of the dataset.
    @Sendable
    @inlinable
    public func deleteDataSetRefreshProperties(_ input: DeleteDataSetRefreshPropertiesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteDataSetRefreshPropertiesResponse {
        try await self.client.execute(
            operation: "DeleteDataSetRefreshProperties", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the dataset refresh properties of the dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteDataSetRefreshProperties(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteDataSetRefreshPropertiesResponse {
        let input = DeleteDataSetRefreshPropertiesRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.deleteDataSetRefreshProperties(input, logger: logger)
    }

    /// Deletes the data source permanently. This operation breaks all the datasets that
    /// 			reference the deleted data source.
    @Sendable
    @inlinable
    public func deleteDataSource(_ input: DeleteDataSourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteDataSourceResponse {
        try await self.client.execute(
            operation: "DeleteDataSource", 
            path: "/accounts/{AwsAccountId}/data-sources/{DataSourceId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the data source permanently. This operation breaks all the datasets that
    /// 			reference the deleted data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSourceId: The ID of the data source. This ID is unique per Amazon Web Services Region for each
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteDataSource(
        awsAccountId: String,
        dataSourceId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteDataSourceResponse {
        let input = DeleteDataSourceRequest(
            awsAccountId: awsAccountId, 
            dataSourceId: dataSourceId
        )
        return try await self.deleteDataSource(input, logger: logger)
    }

    /// Deletes a linked Amazon Q Business application from an Quick Sight account
    @Sendable
    @inlinable
    public func deleteDefaultQBusinessApplication(_ input: DeleteDefaultQBusinessApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteDefaultQBusinessApplicationResponse {
        try await self.client.execute(
            operation: "DeleteDefaultQBusinessApplication", 
            path: "/accounts/{AwsAccountId}/default-qbusiness-application", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a linked Amazon Q Business application from an Quick Sight account
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Quick Sight account that you want to disconnect from a Amazon Q Business application.
    ///   - namespace: The Quick Sight namespace that you want to delete a linked Amazon Q Business application from. If this field is left blank, the Amazon Q Business application is deleted from the default namespace. Currently, the default namespace is the only valid value for this parameter.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteDefaultQBusinessApplication(
        awsAccountId: String,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteDefaultQBusinessApplicationResponse {
        let input = DeleteDefaultQBusinessApplicationRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.deleteDefaultQBusinessApplication(input, logger: logger)
    }

    /// Deletes an empty folder.
    @Sendable
    @inlinable
    public func deleteFolder(_ input: DeleteFolderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteFolderResponse {
        try await self.client.execute(
            operation: "DeleteFolder", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes an empty folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteFolder(
        awsAccountId: String,
        folderId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteFolderResponse {
        let input = DeleteFolderRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId
        )
        return try await self.deleteFolder(input, logger: logger)
    }

    /// Removes an asset, such as a dashboard, analysis, or dataset, from a folder.
    @Sendable
    @inlinable
    public func deleteFolderMembership(_ input: DeleteFolderMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteFolderMembershipResponse {
        try await self.client.execute(
            operation: "DeleteFolderMembership", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/members/{MemberType}/{MemberId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes an asset, such as a dashboard, analysis, or dataset, from a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The Folder ID.
    ///   - memberId: The ID of the asset that you want to delete.
    ///   - memberType: The member type of the asset that you want to delete from a folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteFolderMembership(
        awsAccountId: String,
        folderId: String,
        memberId: String,
        memberType: MemberType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteFolderMembershipResponse {
        let input = DeleteFolderMembershipRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            memberId: memberId, 
            memberType: memberType
        )
        return try await self.deleteFolderMembership(input, logger: logger)
    }

    /// Removes a user group from Amazon Quick Sight.
    @Sendable
    @inlinable
    public func deleteGroup(_ input: DeleteGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteGroupResponse {
        try await self.client.execute(
            operation: "DeleteGroup", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes a user group from Amazon Quick Sight.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to delete.
    ///   - namespace: The namespace of the group that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteGroup(
        awsAccountId: String,
        groupName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteGroupResponse {
        let input = DeleteGroupRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            namespace: namespace
        )
        return try await self.deleteGroup(input, logger: logger)
    }

    /// Removes a user from a group so that the user is no longer a member of the group.
    @Sendable
    @inlinable
    public func deleteGroupMembership(_ input: DeleteGroupMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteGroupMembershipResponse {
        try await self.client.execute(
            operation: "DeleteGroupMembership", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes a user from a group so that the user is no longer a member of the group.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to delete the user from.
    ///   - memberName: The name of the user that you want to delete from the group membership.
    ///   - namespace: The namespace of the group that you want to remove a user from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteGroupMembership(
        awsAccountId: String,
        groupName: String,
        memberName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteGroupMembershipResponse {
        let input = DeleteGroupMembershipRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            memberName: memberName, 
            namespace: namespace
        )
        return try await self.deleteGroupMembership(input, logger: logger)
    }

    /// Deletes an existing IAM policy assignment.
    @Sendable
    @inlinable
    public func deleteIAMPolicyAssignment(_ input: DeleteIAMPolicyAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteIAMPolicyAssignmentResponse {
        try await self.client.execute(
            operation: "DeleteIAMPolicyAssignment", 
            path: "/accounts/{AwsAccountId}/namespace/{Namespace}/iam-policy-assignments/{AssignmentName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes an existing IAM policy assignment.
    ///
    /// Parameters:
    ///   - assignmentName: The name of the assignment.
    ///   - awsAccountId: The Amazon Web Services account ID where you want to delete the IAM
    ///   - namespace: The namespace that contains the assignment.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteIAMPolicyAssignment(
        assignmentName: String,
        awsAccountId: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteIAMPolicyAssignmentResponse {
        let input = DeleteIAMPolicyAssignmentRequest(
            assignmentName: assignmentName, 
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.deleteIAMPolicyAssignment(input, logger: logger)
    }

    /// Deletes all access scopes and authorized targets that are associated with a service from the Quick Sight IAM Identity Center application. This operation is only supported for Quick Sight accounts that use IAM Identity Center.
    @Sendable
    @inlinable
    public func deleteIdentityPropagationConfig(_ input: DeleteIdentityPropagationConfigRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteIdentityPropagationConfigResponse {
        try await self.client.execute(
            operation: "DeleteIdentityPropagationConfig", 
            path: "/accounts/{AwsAccountId}/identity-propagation-config/{Service}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes all access scopes and authorized targets that are associated with a service from the Quick Sight IAM Identity Center application. This operation is only supported for Quick Sight accounts that use IAM Identity Center.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that you want to delete an identity propagation configuration from.
    ///   - service: The name of the Amazon Web Services service that you want to delete the associated access scopes and authorized targets from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteIdentityPropagationConfig(
        awsAccountId: String,
        service: ServiceType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteIdentityPropagationConfigResponse {
        let input = DeleteIdentityPropagationConfigRequest(
            awsAccountId: awsAccountId, 
            service: service
        )
        return try await self.deleteIdentityPropagationConfig(input, logger: logger)
    }

    /// Deletes a namespace and the users and groups that are associated with the namespace. This is an asynchronous process. Assets including dashboards, analyses, datasets and data sources are not  deleted. To delete these assets, you use the API operations for the relevant asset.
    @Sendable
    @inlinable
    public func deleteNamespace(_ input: DeleteNamespaceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteNamespaceResponse {
        try await self.client.execute(
            operation: "DeleteNamespace", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a namespace and the users and groups that are associated with the namespace. This is an asynchronous process. Assets including dashboards, analyses, datasets and data sources are not  deleted. To delete these assets, you use the API operations for the relevant asset.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to delete the Quick Sight namespace from.
    ///   - namespace: The namespace that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteNamespace(
        awsAccountId: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteNamespaceResponse {
        let input = DeleteNamespaceRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.deleteNamespace(input, logger: logger)
    }

    /// Deletes a refresh schedule from a dataset.
    @Sendable
    @inlinable
    public func deleteRefreshSchedule(_ input: DeleteRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteRefreshScheduleResponse {
        try await self.client.execute(
            operation: "DeleteRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules/{ScheduleId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a refresh schedule from a dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - scheduleId: The ID of the refresh schedule.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteRefreshSchedule(
        awsAccountId: String,
        dataSetId: String,
        scheduleId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteRefreshScheduleResponse {
        let input = DeleteRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            scheduleId: scheduleId
        )
        return try await self.deleteRefreshSchedule(input, logger: logger)
    }

    /// Removes custom permissions from the role.
    @Sendable
    @inlinable
    public func deleteRoleCustomPermission(_ input: DeleteRoleCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteRoleCustomPermissionResponse {
        try await self.client.execute(
            operation: "DeleteRoleCustomPermission", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes custom permissions from the role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - namespace: The namespace that includes the role.
    ///   - role: The role that you want to remove permissions from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteRoleCustomPermission(
        awsAccountId: String,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteRoleCustomPermissionResponse {
        let input = DeleteRoleCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            role: role
        )
        return try await self.deleteRoleCustomPermission(input, logger: logger)
    }

    /// Removes a group from a role.
    @Sendable
    @inlinable
    public func deleteRoleMembership(_ input: DeleteRoleMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteRoleMembershipResponse {
        try await self.client.execute(
            operation: "DeleteRoleMembership", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members/{MemberName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes a group from a role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - memberName: The name of the group.
    ///   - namespace: The namespace that contains the role.
    ///   - role: The role that you want to remove permissions from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteRoleMembership(
        awsAccountId: String,
        memberName: String,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteRoleMembershipResponse {
        let input = DeleteRoleMembershipRequest(
            awsAccountId: awsAccountId, 
            memberName: memberName, 
            namespace: namespace, 
            role: role
        )
        return try await self.deleteRoleMembership(input, logger: logger)
    }

    /// Deletes a template.
    @Sendable
    @inlinable
    public func deleteTemplate(_ input: DeleteTemplateRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteTemplateResponse {
        try await self.client.execute(
            operation: "DeleteTemplate", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template that you're deleting.
    ///   - templateId: An ID for the template you want to delete.
    ///   - versionNumber: Specifies the version of the template that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteTemplate(
        awsAccountId: String,
        templateId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteTemplateResponse {
        let input = DeleteTemplateRequest(
            awsAccountId: awsAccountId, 
            templateId: templateId, 
            versionNumber: versionNumber
        )
        return try await self.deleteTemplate(input, logger: logger)
    }

    /// Deletes the item that the specified template alias points to. If you provide a specific
    /// 			alias, you delete the version of the template that the alias points to.
    @Sendable
    @inlinable
    public func deleteTemplateAlias(_ input: DeleteTemplateAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteTemplateAliasResponse {
        try await self.client.execute(
            operation: "DeleteTemplateAlias", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the item that the specified template alias points to. If you provide a specific
    /// 			alias, you delete the version of the template that the alias points to.
    ///
    /// Parameters:
    ///   - aliasName: The name for the template alias. To delete a specific alias, you delete the version that the
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the item to delete.
    ///   - templateId: The ID for the template that the specified alias is for.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteTemplateAlias(
        aliasName: String,
        awsAccountId: String,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteTemplateAliasResponse {
        let input = DeleteTemplateAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId
        )
        return try await self.deleteTemplateAlias(input, logger: logger)
    }

    /// Deletes a theme.
    @Sendable
    @inlinable
    public func deleteTheme(_ input: DeleteThemeRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteThemeResponse {
        try await self.client.execute(
            operation: "DeleteTheme", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a theme.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme that you're deleting.
    ///   - themeId: An ID for the theme that you want to delete.
    ///   - versionNumber: The version of the theme that you want to delete.   Note: If you don't provide a version number, you're
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteTheme(
        awsAccountId: String,
        themeId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteThemeResponse {
        let input = DeleteThemeRequest(
            awsAccountId: awsAccountId, 
            themeId: themeId, 
            versionNumber: versionNumber
        )
        return try await self.deleteTheme(input, logger: logger)
    }

    /// Deletes the version of the theme that the specified theme alias points to.
    /// 			If you provide a specific alias, you delete the version of the theme
    /// 			that the alias points to.
    @Sendable
    @inlinable
    public func deleteThemeAlias(_ input: DeleteThemeAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteThemeAliasResponse {
        try await self.client.execute(
            operation: "DeleteThemeAlias", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the version of the theme that the specified theme alias points to.
    /// 			If you provide a specific alias, you delete the version of the theme
    /// 			that the alias points to.
    ///
    /// Parameters:
    ///   - aliasName: The unique name for the theme alias to delete.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme alias to delete.
    ///   - themeId: The ID for the theme that the specified alias is for.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteThemeAlias(
        aliasName: String,
        awsAccountId: String,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteThemeAliasResponse {
        let input = DeleteThemeAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            themeId: themeId
        )
        return try await self.deleteThemeAlias(input, logger: logger)
    }

    /// Deletes a topic.
    @Sendable
    @inlinable
    public func deleteTopic(_ input: DeleteTopicRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteTopicResponse {
        try await self.client.execute(
            operation: "DeleteTopic", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want to delete.
    ///   - topicId: The ID of the topic that you want to delete. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteTopic(
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteTopicResponse {
        let input = DeleteTopicRequest(
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.deleteTopic(input, logger: logger)
    }

    /// Deletes a topic refresh schedule.
    @Sendable
    @inlinable
    public func deleteTopicRefreshSchedule(_ input: DeleteTopicRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteTopicRefreshScheduleResponse {
        try await self.client.execute(
            operation: "DeleteTopicRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a topic refresh schedule.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - datasetId: The ID of the dataset.
    ///   - topicId: The ID of the topic that you want to modify. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteTopicRefreshSchedule(
        awsAccountId: String,
        datasetId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteTopicRefreshScheduleResponse {
        let input = DeleteTopicRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            datasetId: datasetId, 
            topicId: topicId
        )
        return try await self.deleteTopicRefreshSchedule(input, logger: logger)
    }

    /// Deletes the Amazon Quick Sight user that is associated with the identity of the
    /// 			IAM user or role that's making the call. The IAM user
    /// 			isn't deleted as a result of this call.
    @Sendable
    @inlinable
    public func deleteUser(_ input: DeleteUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteUserResponse {
        try await self.client.execute(
            operation: "DeleteUser", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the Amazon Quick Sight user that is associated with the identity of the
    /// 			IAM user or role that's making the call. The IAM user
    /// 			isn't deleted as a result of this call.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - userName: The name of the user that you want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteUser(
        awsAccountId: String,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteUserResponse {
        let input = DeleteUserRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            userName: userName
        )
        return try await self.deleteUser(input, logger: logger)
    }

    /// Deletes a user identified by its principal ID.
    @Sendable
    @inlinable
    public func deleteUserByPrincipalId(_ input: DeleteUserByPrincipalIdRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteUserByPrincipalIdResponse {
        try await self.client.execute(
            operation: "DeleteUserByPrincipalId", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/user-principals/{PrincipalId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a user identified by its principal ID.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - principalId: The principal ID of the user.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteUserByPrincipalId(
        awsAccountId: String,
        namespace: String,
        principalId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteUserByPrincipalIdResponse {
        let input = DeleteUserByPrincipalIdRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            principalId: principalId
        )
        return try await self.deleteUserByPrincipalId(input, logger: logger)
    }

    /// Deletes a custom permissions profile from a user.
    @Sendable
    @inlinable
    public func deleteUserCustomPermission(_ input: DeleteUserCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteUserCustomPermissionResponse {
        try await self.client.execute(
            operation: "DeleteUserCustomPermission", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/custom-permission", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a custom permissions profile from a user.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permission configuration that you want to delete.
    ///   - namespace: The namespace that the user belongs to.
    ///   - userName: The username of the user that you want to remove custom permissions from.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteUserCustomPermission(
        awsAccountId: String,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteUserCustomPermissionResponse {
        let input = DeleteUserCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            userName: userName
        )
        return try await self.deleteUserCustomPermission(input, logger: logger)
    }

    /// Deletes a VPC connection.
    @Sendable
    @inlinable
    public func deleteVPCConnection(_ input: DeleteVPCConnectionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DeleteVPCConnectionResponse {
        try await self.client.execute(
            operation: "DeleteVPCConnection", 
            path: "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a VPC connection.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account where you want to delete a VPC
    ///   - vpcConnectionId: The ID of the VPC connection that you're creating. This ID is a unique identifier for each Amazon Web Services Region in an
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVPCConnection(
        awsAccountId: String,
        vpcConnectionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DeleteVPCConnectionResponse {
        let input = DeleteVPCConnectionRequest(
            awsAccountId: awsAccountId, 
            vpcConnectionId: vpcConnectionId
        )
        return try await self.deleteVPCConnection(input, logger: logger)
    }

    /// Describes the custom permissions profile that is applied to an account.
    @Sendable
    @inlinable
    public func describeAccountCustomPermission(_ input: DescribeAccountCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAccountCustomPermissionResponse {
        try await self.client.execute(
            operation: "DescribeAccountCustomPermission", 
            path: "/accounts/{AwsAccountId}/custom-permission", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the custom permissions profile that is applied to an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account for which you want to describe the applied custom permissions profile.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAccountCustomPermission(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAccountCustomPermissionResponse {
        let input = DescribeAccountCustomPermissionRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeAccountCustomPermission(input, logger: logger)
    }

    /// Describes the customizations associated with the provided Amazon Web Services account and Amazon Quick Sight namespace. The Quick Sight console evaluates which customizations to apply by running this API operation with the Resolved flag included.  To determine what customizations display when you run this command, it can help to visualize the relationship of the entities involved.     Amazon Web Services account - The Amazon Web Services account exists at the top of the hierarchy. It has the potential to use all of the Amazon Web Services Regions and Amazon Web Services Services. When you subscribe to Quick Sight, you choose one Amazon Web Services Region to use as your home Region. That's where your free SPICE capacity is located. You can use Quick Sight in any supported Amazon Web Services Region.     Amazon Web Services Region - You can sign in to Quick Sight in any Amazon Web Services Region. If you have a user directory, it resides in us-east-1, which is US East (N. Virginia). Generally speaking, these users have access to Quick Sight in any Amazon Web Services Region, unless they are constrained to a namespace.  To run the command in a different Amazon Web Services Region, you change your Region settings. If you're using the CLI, you can use one of the following options:   Use command line options.    Use named profiles.    Run aws configure to change your default Amazon Web Services Region. Use Enter to key the same settings for your keys. For more information, see Configuring the CLI.      Namespace - A Quick Sight namespace is a partition that contains users and assets (data sources, datasets, dashboards, and so on). To access assets that are in a specific namespace, users and groups must also be part of the same namespace. People who share a namespace are completely isolated from users and assets in other namespaces, even if they are in the same Amazon Web Services account and Amazon Web Services Region.    Applied customizations - Quick Sight customizations can apply to an Amazon Web Services account or to a namespace. Settings that you apply to a namespace override settings that you apply to an Amazon Web Services account.
    @Sendable
    @inlinable
    public func describeAccountCustomization(_ input: DescribeAccountCustomizationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAccountCustomizationResponse {
        try await self.client.execute(
            operation: "DescribeAccountCustomization", 
            path: "/accounts/{AwsAccountId}/customizations", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the customizations associated with the provided Amazon Web Services account and Amazon Quick Sight namespace. The Quick Sight console evaluates which customizations to apply by running this API operation with the Resolved flag included.  To determine what customizations display when you run this command, it can help to visualize the relationship of the entities involved.     Amazon Web Services account - The Amazon Web Services account exists at the top of the hierarchy. It has the potential to use all of the Amazon Web Services Regions and Amazon Web Services Services. When you subscribe to Quick Sight, you choose one Amazon Web Services Region to use as your home Region. That's where your free SPICE capacity is located. You can use Quick Sight in any supported Amazon Web Services Region.     Amazon Web Services Region - You can sign in to Quick Sight in any Amazon Web Services Region. If you have a user directory, it resides in us-east-1, which is US East (N. Virginia). Generally speaking, these users have access to Quick Sight in any Amazon Web Services Region, unless they are constrained to a namespace.  To run the command in a different Amazon Web Services Region, you change your Region settings. If you're using the CLI, you can use one of the following options:   Use command line options.    Use named profiles.    Run aws configure to change your default Amazon Web Services Region. Use Enter to key the same settings for your keys. For more information, see Configuring the CLI.      Namespace - A Quick Sight namespace is a partition that contains users and assets (data sources, datasets, dashboards, and so on). To access assets that are in a specific namespace, users and groups must also be part of the same namespace. People who share a namespace are completely isolated from users and assets in other namespaces, even if they are in the same Amazon Web Services account and Amazon Web Services Region.    Applied customizations - Quick Sight customizations can apply to an Amazon Web Services account or to a namespace. Settings that you apply to a namespace override settings that you apply to an Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to describe Quick Sight customizations for.
    ///   - namespace: The Quick Sight namespace that you want to describe Quick Sight customizations for.
    ///   - resolved: The Resolved flag works with the other parameters to determine which view of Quick Sight customizations is returned. You can add this flag to your command to use the same view that Quick Sight uses to identify which customizations to apply to the console. Omit this flag, or set it to no-resolved, to reveal customizations that are configured at different levels.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAccountCustomization(
        awsAccountId: String,
        namespace: String? = nil,
        resolved: Bool? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAccountCustomizationResponse {
        let input = DescribeAccountCustomizationRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            resolved: resolved
        )
        return try await self.describeAccountCustomization(input, logger: logger)
    }

    /// Describes the settings that were used when your Quick Sight subscription was first created in this Amazon Web Services account.
    @Sendable
    @inlinable
    public func describeAccountSettings(_ input: DescribeAccountSettingsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAccountSettingsResponse {
        try await self.client.execute(
            operation: "DescribeAccountSettings", 
            path: "/accounts/{AwsAccountId}/settings", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the settings that were used when your Quick Sight subscription was first created in this Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the settings that you want to list.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAccountSettings(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAccountSettingsResponse {
        let input = DescribeAccountSettingsRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeAccountSettings(input, logger: logger)
    }

    /// Use the DescribeAccountSubscription operation to receive a description of an Quick Sight account's subscription. A successful API call returns an AccountInfo object that includes an account's name, subscription status, authentication type, edition, and notification email address.
    @Sendable
    @inlinable
    public func describeAccountSubscription(_ input: DescribeAccountSubscriptionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAccountSubscriptionResponse {
        try await self.client.execute(
            operation: "DescribeAccountSubscription", 
            path: "/account/{AwsAccountId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the DescribeAccountSubscription operation to receive a description of an Quick Sight account's subscription. A successful API call returns an AccountInfo object that includes an account's name, subscription status, authentication type, edition, and notification email address.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID associated with your Quick Sight account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAccountSubscription(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAccountSubscriptionResponse {
        let input = DescribeAccountSubscriptionRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeAccountSubscription(input, logger: logger)
    }

    /// Retrieves detailed information about an action connector, including its configuration, authentication settings, enabled actions, and current status.
    @Sendable
    @inlinable
    public func describeActionConnector(_ input: DescribeActionConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeActionConnectorResponse {
        try await self.client.execute(
            operation: "DescribeActionConnector", 
            path: "/accounts/{AwsAccountId}/action-connectors/{ActionConnectorId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves detailed information about an action connector, including its configuration, authentication settings, enabled actions, and current status.
    ///
    /// Parameters:
    ///   - actionConnectorId: The unique identifier of the action connector to describe.
    ///   - awsAccountId: The Amazon Web Services account ID that contains the action connector.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeActionConnector(
        actionConnectorId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeActionConnectorResponse {
        let input = DescribeActionConnectorRequest(
            actionConnectorId: actionConnectorId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeActionConnector(input, logger: logger)
    }

    /// Retrieves the permissions configuration for an action connector, showing which users, groups, and namespaces have access and what operations they can perform.
    @Sendable
    @inlinable
    public func describeActionConnectorPermissions(_ input: DescribeActionConnectorPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeActionConnectorPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeActionConnectorPermissions", 
            path: "/accounts/{AwsAccountId}/action-connectors/{ActionConnectorId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the permissions configuration for an action connector, showing which users, groups, and namespaces have access and what operations they can perform.
    ///
    /// Parameters:
    ///   - actionConnectorId: The unique identifier of the action connector whose permissions you want to describe.
    ///   - awsAccountId: The Amazon Web Services account ID that contains the action connector.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeActionConnectorPermissions(
        actionConnectorId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeActionConnectorPermissionsResponse {
        let input = DescribeActionConnectorPermissionsRequest(
            actionConnectorId: actionConnectorId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeActionConnectorPermissions(input, logger: logger)
    }

    /// Provides a summary of the metadata for an analysis.
    @Sendable
    @inlinable
    public func describeAnalysis(_ input: DescribeAnalysisRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAnalysisResponse {
        try await self.client.execute(
            operation: "DescribeAnalysis", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a summary of the metadata for an analysis.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis that you're describing. The ID is part of the URL of the analysis.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis. You must be using the  Amazon Web Services account that the analysis is in.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAnalysis(
        analysisId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAnalysisResponse {
        let input = DescribeAnalysisRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeAnalysis(input, logger: logger)
    }

    /// Provides a detailed description of the definition of an analysis.  If you do not need to know details about the content of an Analysis, for instance if you are trying to check the status of a recently created or updated Analysis, use the  DescribeAnalysis instead.
    @Sendable
    @inlinable
    public func describeAnalysisDefinition(_ input: DescribeAnalysisDefinitionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAnalysisDefinitionResponse {
        try await self.client.execute(
            operation: "DescribeAnalysisDefinition", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}/definition", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a detailed description of the definition of an analysis.  If you do not need to know details about the content of an Analysis, for instance if you are trying to check the status of a recently created or updated Analysis, use the  DescribeAnalysis instead.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis that you're describing. The ID is part of the URL of the analysis.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis. You must be using the Amazon Web Services account that the analysis is in.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAnalysisDefinition(
        analysisId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAnalysisDefinitionResponse {
        let input = DescribeAnalysisDefinitionRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeAnalysisDefinition(input, logger: logger)
    }

    /// Provides the read and write permissions for an analysis.
    @Sendable
    @inlinable
    public func describeAnalysisPermissions(_ input: DescribeAnalysisPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAnalysisPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeAnalysisPermissions", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides the read and write permissions for an analysis.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis whose permissions you're describing. The ID is part of the analysis URL.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis whose permissions you're describing. You must be using the Amazon Web Services account that the analysis is in.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAnalysisPermissions(
        analysisId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAnalysisPermissionsResponse {
        let input = DescribeAnalysisPermissionsRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeAnalysisPermissions(input, logger: logger)
    }

    /// Describes an existing export job. Poll job descriptions after a job starts to know the status of the job. When a job succeeds, a URL is provided to download the exported assets' data from. Download URLs are valid for five minutes after they are generated. You can call the DescribeAssetBundleExportJob API for a new download URL as needed. Job descriptions are available for 14 days after the job starts.
    @Sendable
    @inlinable
    public func describeAssetBundleExportJob(_ input: DescribeAssetBundleExportJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAssetBundleExportJobResponse {
        try await self.client.execute(
            operation: "DescribeAssetBundleExportJob", 
            path: "/accounts/{AwsAccountId}/asset-bundle-export-jobs/{AssetBundleExportJobId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes an existing export job. Poll job descriptions after a job starts to know the status of the job. When a job succeeds, a URL is provided to download the exported assets' data from. Download URLs are valid for five minutes after they are generated. You can call the DescribeAssetBundleExportJob API for a new download URL as needed. Job descriptions are available for 14 days after the job starts.
    ///
    /// Parameters:
    ///   - assetBundleExportJobId: The ID of the job that you want described. The job ID is set when you start a new job with a StartAssetBundleExportJob API call.
    ///   - awsAccountId: The ID of the Amazon Web Services account the export job is executed in.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAssetBundleExportJob(
        assetBundleExportJobId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAssetBundleExportJobResponse {
        let input = DescribeAssetBundleExportJobRequest(
            assetBundleExportJobId: assetBundleExportJobId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeAssetBundleExportJob(input, logger: logger)
    }

    /// Describes an existing import job. Poll job descriptions after starting a job to know when it has succeeded or failed. Job descriptions are available for 14 days after job starts.
    @Sendable
    @inlinable
    public func describeAssetBundleImportJob(_ input: DescribeAssetBundleImportJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeAssetBundleImportJobResponse {
        try await self.client.execute(
            operation: "DescribeAssetBundleImportJob", 
            path: "/accounts/{AwsAccountId}/asset-bundle-import-jobs/{AssetBundleImportJobId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes an existing import job. Poll job descriptions after starting a job to know when it has succeeded or failed. Job descriptions are available for 14 days after job starts.
    ///
    /// Parameters:
    ///   - assetBundleImportJobId: The ID of the job. The job ID is set when you start a new job with a StartAssetBundleImportJob API call.
    ///   - awsAccountId: The ID of the Amazon Web Services account the import job was executed in.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeAssetBundleImportJob(
        assetBundleImportJobId: String,
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeAssetBundleImportJobResponse {
        let input = DescribeAssetBundleImportJobRequest(
            assetBundleImportJobId: assetBundleImportJobId, 
            awsAccountId: awsAccountId
        )
        return try await self.describeAssetBundleImportJob(input, logger: logger)
    }

    /// Describes a brand.
    @Sendable
    @inlinable
    public func describeBrand(_ input: DescribeBrandRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeBrandResponse {
        try await self.client.execute(
            operation: "DescribeBrand", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - versionId: The ID of the specific version. The default value is the latest version.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeBrand(
        awsAccountId: String,
        brandId: String,
        versionId: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeBrandResponse {
        let input = DescribeBrandRequest(
            awsAccountId: awsAccountId, 
            brandId: brandId, 
            versionId: versionId
        )
        return try await self.describeBrand(input, logger: logger)
    }

    /// Describes a brand assignment.
    @Sendable
    @inlinable
    public func describeBrandAssignment(_ input: DescribeBrandAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeBrandAssignmentResponse {
        try await self.client.execute(
            operation: "DescribeBrandAssignment", 
            path: "/accounts/{AwsAccountId}/brandassignments", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a brand assignment.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand assignment.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeBrandAssignment(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeBrandAssignmentResponse {
        let input = DescribeBrandAssignmentRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeBrandAssignment(input, logger: logger)
    }

    /// Describes the published version of the brand.
    @Sendable
    @inlinable
    public func describeBrandPublishedVersion(_ input: DescribeBrandPublishedVersionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeBrandPublishedVersionResponse {
        try await self.client.execute(
            operation: "DescribeBrandPublishedVersion", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}/publishedversion", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the published version of the brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeBrandPublishedVersion(
        awsAccountId: String,
        brandId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeBrandPublishedVersionResponse {
        let input = DescribeBrandPublishedVersionRequest(
            awsAccountId: awsAccountId, 
            brandId: brandId
        )
        return try await self.describeBrandPublishedVersion(input, logger: logger)
    }

    /// Describes a custom permissions profile.
    @Sendable
    @inlinable
    public func describeCustomPermissions(_ input: DescribeCustomPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeCustomPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeCustomPermissions", 
            path: "/accounts/{AwsAccountId}/custom-permissions/{CustomPermissionsName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a custom permissions profile.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permissions profile that you want described.
    ///   - customPermissionsName: The name of the custom permissions profile to describe.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeCustomPermissions(
        awsAccountId: String,
        customPermissionsName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeCustomPermissionsResponse {
        let input = DescribeCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            customPermissionsName: customPermissionsName
        )
        return try await self.describeCustomPermissions(input, logger: logger)
    }

    /// Provides a summary for a dashboard.
    @Sendable
    @inlinable
    public func describeDashboard(_ input: DescribeDashboardRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardResponse {
        try await self.client.execute(
            operation: "DescribeDashboard", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a summary for a dashboard.
    ///
    /// Parameters:
    ///   - aliasName: The alias name.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're describing.
    ///   - dashboardId: The ID for the dashboard.
    ///   - versionNumber: The version number for the dashboard. If a version number isn't passed, the latest published dashboard version is described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboard(
        aliasName: String? = nil,
        awsAccountId: String,
        dashboardId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardResponse {
        let input = DescribeDashboardRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            versionNumber: versionNumber
        )
        return try await self.describeDashboard(input, logger: logger)
    }

    /// Provides a detailed description of the definition of a dashboard.  If you do not need to know details about the content of a dashboard, for instance if you are trying to check the status of a recently created or updated dashboard, use the  DescribeDashboard instead.
    @Sendable
    @inlinable
    public func describeDashboardDefinition(_ input: DescribeDashboardDefinitionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardDefinitionResponse {
        try await self.client.execute(
            operation: "DescribeDashboardDefinition", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/definition", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a detailed description of the definition of a dashboard.  If you do not need to know details about the content of a dashboard, for instance if you are trying to check the status of a recently created or updated dashboard, use the  DescribeDashboard instead.
    ///
    /// Parameters:
    ///   - aliasName: The alias name.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're describing.
    ///   - dashboardId: The ID for the dashboard.
    ///   - versionNumber: The version number for the dashboard. If a version number isn't passed, the latest published dashboard version is described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboardDefinition(
        aliasName: String? = nil,
        awsAccountId: String,
        dashboardId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardDefinitionResponse {
        let input = DescribeDashboardDefinitionRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            versionNumber: versionNumber
        )
        return try await self.describeDashboardDefinition(input, logger: logger)
    }

    /// Describes read and write permissions for a dashboard.
    @Sendable
    @inlinable
    public func describeDashboardPermissions(_ input: DescribeDashboardPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeDashboardPermissions", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes read and write permissions for a dashboard.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're describing permissions for.
    ///   - dashboardId: The ID for the dashboard, also added to the IAM policy.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboardPermissions(
        awsAccountId: String,
        dashboardId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardPermissionsResponse {
        let input = DescribeDashboardPermissionsRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId
        )
        return try await self.describeDashboardPermissions(input, logger: logger)
    }

    /// Describes an existing snapshot job. Poll job descriptions after a job starts to know the status of the job. For information on available status codes, see JobStatus.
    @Sendable
    @inlinable
    public func describeDashboardSnapshotJob(_ input: DescribeDashboardSnapshotJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardSnapshotJobResponse {
        try await self.client.execute(
            operation: "DescribeDashboardSnapshotJob", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs/{SnapshotJobId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes an existing snapshot job. Poll job descriptions after a job starts to know the status of the job. For information on available status codes, see JobStatus.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the dashboard snapshot job is executed in.
    ///   - dashboardId: The ID of the dashboard that you have started a snapshot job for.
    ///   - snapshotJobId: The ID of the job to be described. The job ID is set when you start a new job with a StartDashboardSnapshotJob API call.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboardSnapshotJob(
        awsAccountId: String,
        dashboardId: String,
        snapshotJobId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardSnapshotJobResponse {
        let input = DescribeDashboardSnapshotJobRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            snapshotJobId: snapshotJobId
        )
        return try await self.describeDashboardSnapshotJob(input, logger: logger)
    }

    /// Describes the result of an existing snapshot job that has finished running. A finished snapshot job will return a COMPLETED or FAILED status when you poll the job with a DescribeDashboardSnapshotJob API call. If the job has not finished running, this operation returns a message that says Dashboard Snapshot Job with id  has not reached a terminal state..
    @Sendable
    @inlinable
    public func describeDashboardSnapshotJobResult(_ input: DescribeDashboardSnapshotJobResultRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardSnapshotJobResultResponse {
        try await self.client.execute(
            operation: "DescribeDashboardSnapshotJobResult", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs/{SnapshotJobId}/result", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the result of an existing snapshot job that has finished running. A finished snapshot job will return a COMPLETED or FAILED status when you poll the job with a DescribeDashboardSnapshotJob API call. If the job has not finished running, this operation returns a message that says Dashboard Snapshot Job with id  has not reached a terminal state..
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the dashboard snapshot job is executed in.
    ///   - dashboardId: The ID of the dashboard that you have started a snapshot job for.
    ///   - snapshotJobId: The ID of the job to be described. The job ID is set when you start a new job with a StartDashboardSnapshotJob API call.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboardSnapshotJobResult(
        awsAccountId: String,
        dashboardId: String,
        snapshotJobId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardSnapshotJobResultResponse {
        let input = DescribeDashboardSnapshotJobResultRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            snapshotJobId: snapshotJobId
        )
        return try await self.describeDashboardSnapshotJobResult(input, logger: logger)
    }

    /// Describes an existing dashboard QA configuration.
    @Sendable
    @inlinable
    public func describeDashboardsQAConfiguration(_ input: DescribeDashboardsQAConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDashboardsQAConfigurationResponse {
        try await self.client.execute(
            operation: "DescribeDashboardsQAConfiguration", 
            path: "/accounts/{AwsAccountId}/dashboards-qa-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes an existing dashboard QA configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard QA configuration that you want described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDashboardsQAConfiguration(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDashboardsQAConfigurationResponse {
        let input = DescribeDashboardsQAConfigurationRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeDashboardsQAConfiguration(input, logger: logger)
    }

    /// Describes a dataset. This operation doesn't support datasets that include uploaded
    /// 			files as a source.
    @Sendable
    @inlinable
    public func describeDataSet(_ input: DescribeDataSetRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDataSetResponse {
        try await self.client.execute(
            operation: "DescribeDataSet", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a dataset. This operation doesn't support datasets that include uploaded
    /// 			files as a source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID for the dataset that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDataSet(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDataSetResponse {
        let input = DescribeDataSetRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.describeDataSet(input, logger: logger)
    }

    /// Describes the permissions on a dataset. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
    @Sendable
    @inlinable
    public func describeDataSetPermissions(_ input: DescribeDataSetPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDataSetPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeDataSetPermissions", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the permissions on a dataset. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID for the dataset that you want to create. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDataSetPermissions(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDataSetPermissionsResponse {
        let input = DescribeDataSetPermissionsRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.describeDataSetPermissions(input, logger: logger)
    }

    /// Describes the refresh properties of a dataset.
    @Sendable
    @inlinable
    public func describeDataSetRefreshProperties(_ input: DescribeDataSetRefreshPropertiesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDataSetRefreshPropertiesResponse {
        try await self.client.execute(
            operation: "DescribeDataSetRefreshProperties", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the refresh properties of a dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDataSetRefreshProperties(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDataSetRefreshPropertiesResponse {
        let input = DescribeDataSetRefreshPropertiesRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.describeDataSetRefreshProperties(input, logger: logger)
    }

    /// Describes a data source.
    @Sendable
    @inlinable
    public func describeDataSource(_ input: DescribeDataSourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDataSourceResponse {
        try await self.client.execute(
            operation: "DescribeDataSource", 
            path: "/accounts/{AwsAccountId}/data-sources/{DataSourceId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSourceId: The ID of the data source. This ID is unique per Amazon Web Services Region for each
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDataSource(
        awsAccountId: String,
        dataSourceId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDataSourceResponse {
        let input = DescribeDataSourceRequest(
            awsAccountId: awsAccountId, 
            dataSourceId: dataSourceId
        )
        return try await self.describeDataSource(input, logger: logger)
    }

    /// Describes the resource permissions for a data source.
    @Sendable
    @inlinable
    public func describeDataSourcePermissions(_ input: DescribeDataSourcePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDataSourcePermissionsResponse {
        try await self.client.execute(
            operation: "DescribeDataSourcePermissions", 
            path: "/accounts/{AwsAccountId}/data-sources/{DataSourceId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the resource permissions for a data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSourceId: The ID of the data source. This ID is unique per Amazon Web Services Region for each
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDataSourcePermissions(
        awsAccountId: String,
        dataSourceId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDataSourcePermissionsResponse {
        let input = DescribeDataSourcePermissionsRequest(
            awsAccountId: awsAccountId, 
            dataSourceId: dataSourceId
        )
        return try await self.describeDataSourcePermissions(input, logger: logger)
    }

    /// Describes a Amazon Q Business application that is linked to an Quick Sight account.
    @Sendable
    @inlinable
    public func describeDefaultQBusinessApplication(_ input: DescribeDefaultQBusinessApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeDefaultQBusinessApplicationResponse {
        try await self.client.execute(
            operation: "DescribeDefaultQBusinessApplication", 
            path: "/accounts/{AwsAccountId}/default-qbusiness-application", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a Amazon Q Business application that is linked to an Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Quick Sight account that is linked to the Amazon Q Business application that you want described.
    ///   - namespace: The Quick Sight namespace that contains the linked Amazon Q Business application. If this field is left blank, the default namespace is used. Currently, the default namespace is the only valid value for this parameter.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeDefaultQBusinessApplication(
        awsAccountId: String,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeDefaultQBusinessApplicationResponse {
        let input = DescribeDefaultQBusinessApplicationRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.describeDefaultQBusinessApplication(input, logger: logger)
    }

    /// Describes a folder.
    @Sendable
    @inlinable
    public func describeFolder(_ input: DescribeFolderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeFolderResponse {
        try await self.client.execute(
            operation: "DescribeFolder", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeFolder(
        awsAccountId: String,
        folderId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeFolderResponse {
        let input = DescribeFolderRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId
        )
        return try await self.describeFolder(input, logger: logger)
    }

    /// Describes permissions for a folder.
    @Sendable
    @inlinable
    public func describeFolderPermissions(_ input: DescribeFolderPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeFolderPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeFolderPermissions", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes permissions for a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the folder whose permissions you want described.
    ///   - nextToken: A pagination token for the next set of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeFolderPermissions(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        namespace: String? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeFolderPermissionsResponse {
        let input = DescribeFolderPermissionsRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.describeFolderPermissions(input, logger: logger)
    }

    /// Describes the folder resolved permissions. Permissions consists of both folder direct permissions and the inherited permissions from the ancestor folders.
    @Sendable
    @inlinable
    public func describeFolderResolvedPermissions(_ input: DescribeFolderResolvedPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeFolderResolvedPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeFolderResolvedPermissions", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/resolved-permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the folder resolved permissions. Permissions consists of both folder direct permissions and the inherited permissions from the ancestor folders.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the folder whose permissions you want described.
    ///   - nextToken: A pagination token for the next set of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeFolderResolvedPermissions(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        namespace: String? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeFolderResolvedPermissionsResponse {
        let input = DescribeFolderResolvedPermissionsRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.describeFolderResolvedPermissions(input, logger: logger)
    }

    /// Returns an Amazon Quick Sight group's description and Amazon Resource Name (ARN).
    @Sendable
    @inlinable
    public func describeGroup(_ input: DescribeGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeGroupResponse {
        try await self.client.execute(
            operation: "DescribeGroup", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Returns an Amazon Quick Sight group's description and Amazon Resource Name (ARN).
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to describe.
    ///   - namespace: The namespace of the group that you want described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeGroup(
        awsAccountId: String,
        groupName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeGroupResponse {
        let input = DescribeGroupRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            namespace: namespace
        )
        return try await self.describeGroup(input, logger: logger)
    }

    /// Use the DescribeGroupMembership operation to determine if a user is a
    /// 			member of the specified group. If the user exists and is a member of the specified
    /// 			group, an associated GroupMember object is returned.
    @Sendable
    @inlinable
    public func describeGroupMembership(_ input: DescribeGroupMembershipRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeGroupMembershipResponse {
        try await self.client.execute(
            operation: "DescribeGroupMembership", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the DescribeGroupMembership operation to determine if a user is a
    /// 			member of the specified group. If the user exists and is a member of the specified
    /// 			group, an associated GroupMember object is returned.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the  Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - groupName: The name of the group that you want to search.
    ///   - memberName: The user name of the user that you want to search for.
    ///   - namespace: The namespace that includes the group you are searching within.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeGroupMembership(
        awsAccountId: String,
        groupName: String,
        memberName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeGroupMembershipResponse {
        let input = DescribeGroupMembershipRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            memberName: memberName, 
            namespace: namespace
        )
        return try await self.describeGroupMembership(input, logger: logger)
    }

    /// Describes an existing IAM policy assignment, as specified by the
    /// 			assignment name.
    @Sendable
    @inlinable
    public func describeIAMPolicyAssignment(_ input: DescribeIAMPolicyAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeIAMPolicyAssignmentResponse {
        try await self.client.execute(
            operation: "DescribeIAMPolicyAssignment", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments/{AssignmentName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes an existing IAM policy assignment, as specified by the
    /// 			assignment name.
    ///
    /// Parameters:
    ///   - assignmentName: The name of the assignment, also called a rule.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the assignment that you want to
    ///   - namespace: The namespace that contains the assignment.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeIAMPolicyAssignment(
        assignmentName: String,
        awsAccountId: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeIAMPolicyAssignmentResponse {
        let input = DescribeIAMPolicyAssignmentRequest(
            assignmentName: assignmentName, 
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.describeIAMPolicyAssignment(input, logger: logger)
    }

    /// Describes a SPICE ingestion.
    @Sendable
    @inlinable
    public func describeIngestion(_ input: DescribeIngestionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeIngestionResponse {
        try await self.client.execute(
            operation: "DescribeIngestion", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a SPICE ingestion.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset used in the ingestion.
    ///   - ingestionId: An ID for the ingestion.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeIngestion(
        awsAccountId: String,
        dataSetId: String,
        ingestionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeIngestionResponse {
        let input = DescribeIngestionRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            ingestionId: ingestionId
        )
        return try await self.describeIngestion(input, logger: logger)
    }

    /// Provides a summary and status of IP rules.
    @Sendable
    @inlinable
    public func describeIpRestriction(_ input: DescribeIpRestrictionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeIpRestrictionResponse {
        try await self.client.execute(
            operation: "DescribeIpRestriction", 
            path: "/accounts/{AwsAccountId}/ip-restriction", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a summary and status of IP rules.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the IP rules.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeIpRestriction(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeIpRestrictionResponse {
        let input = DescribeIpRestrictionRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeIpRestriction(input, logger: logger)
    }

    /// Describes all customer managed key registrations in a Quick Sight account.
    @Sendable
    @inlinable
    public func describeKeyRegistration(_ input: DescribeKeyRegistrationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeKeyRegistrationResponse {
        try await self.client.execute(
            operation: "DescribeKeyRegistration", 
            path: "/accounts/{AwsAccountId}/key-registration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes all customer managed key registrations in a Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the customer managed key registration that you want to describe.
    ///   - defaultKeyOnly: Determines whether the request returns the default key only.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeKeyRegistration(
        awsAccountId: String,
        defaultKeyOnly: Bool? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeKeyRegistrationResponse {
        let input = DescribeKeyRegistrationRequest(
            awsAccountId: awsAccountId, 
            defaultKeyOnly: defaultKeyOnly
        )
        return try await self.describeKeyRegistration(input, logger: logger)
    }

    /// Describes the current namespace.
    @Sendable
    @inlinable
    public func describeNamespace(_ input: DescribeNamespaceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeNamespaceResponse {
        try await self.client.execute(
            operation: "DescribeNamespace", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the current namespace.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the Quick Sight namespace that you want to describe.
    ///   - namespace: The namespace that you want to describe.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeNamespace(
        awsAccountId: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeNamespaceResponse {
        let input = DescribeNamespaceRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.describeNamespace(input, logger: logger)
    }

    /// Describes a personalization configuration.
    @Sendable
    @inlinable
    public func describeQPersonalizationConfiguration(_ input: DescribeQPersonalizationConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeQPersonalizationConfigurationResponse {
        try await self.client.execute(
            operation: "DescribeQPersonalizationConfiguration", 
            path: "/accounts/{AwsAccountId}/q-personalization-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a personalization configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the personalization configuration that the user wants described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeQPersonalizationConfiguration(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeQPersonalizationConfigurationResponse {
        let input = DescribeQPersonalizationConfigurationRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeQPersonalizationConfiguration(input, logger: logger)
    }

    /// Describes the state of a Quick Sight Q Search configuration.
    @Sendable
    @inlinable
    public func describeQuickSightQSearchConfiguration(_ input: DescribeQuickSightQSearchConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeQuickSightQSearchConfigurationResponse {
        try await self.client.execute(
            operation: "DescribeQuickSightQSearchConfiguration", 
            path: "/accounts/{AwsAccountId}/quicksight-q-search-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the state of a Quick Sight Q Search configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the Quick Sight Q Search configuration that the user wants described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeQuickSightQSearchConfiguration(
        awsAccountId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeQuickSightQSearchConfigurationResponse {
        let input = DescribeQuickSightQSearchConfigurationRequest(
            awsAccountId: awsAccountId
        )
        return try await self.describeQuickSightQSearchConfiguration(input, logger: logger)
    }

    /// Provides a summary of a refresh schedule.
    @Sendable
    @inlinable
    public func describeRefreshSchedule(_ input: DescribeRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeRefreshScheduleResponse {
        try await self.client.execute(
            operation: "DescribeRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules/{ScheduleId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a summary of a refresh schedule.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - scheduleId: The ID of the refresh schedule.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeRefreshSchedule(
        awsAccountId: String,
        dataSetId: String,
        scheduleId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeRefreshScheduleResponse {
        let input = DescribeRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            scheduleId: scheduleId
        )
        return try await self.describeRefreshSchedule(input, logger: logger)
    }

    /// Describes all custom permissions that are  mapped to a role.
    @Sendable
    @inlinable
    public func describeRoleCustomPermission(_ input: DescribeRoleCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeRoleCustomPermissionResponse {
        try await self.client.execute(
            operation: "DescribeRoleCustomPermission", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes all custom permissions that are  mapped to a role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - namespace: The namespace that contains the role.
    ///   - role: The name of the role whose permissions you want described.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeRoleCustomPermission(
        awsAccountId: String,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeRoleCustomPermissionResponse {
        let input = DescribeRoleCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            role: role
        )
        return try await self.describeRoleCustomPermission(input, logger: logger)
    }

    /// Describes a template's metadata.
    @Sendable
    @inlinable
    public func describeTemplate(_ input: DescribeTemplateRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTemplateResponse {
        try await self.client.execute(
            operation: "DescribeTemplate", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a template's metadata.
    ///
    /// Parameters:
    ///   - aliasName: The alias of the template that you want to describe. If you name a specific alias, you
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template that you're describing.
    ///   - templateId: The ID for the template.
    ///   - versionNumber: (Optional) The number for the version to describe. If a VersionNumber parameter
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTemplate(
        aliasName: String? = nil,
        awsAccountId: String,
        templateId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTemplateResponse {
        let input = DescribeTemplateRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId, 
            versionNumber: versionNumber
        )
        return try await self.describeTemplate(input, logger: logger)
    }

    /// Describes the template alias for a template.
    @Sendable
    @inlinable
    public func describeTemplateAlias(_ input: DescribeTemplateAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTemplateAliasResponse {
        try await self.client.execute(
            operation: "DescribeTemplateAlias", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the template alias for a template.
    ///
    /// Parameters:
    ///   - aliasName: The name of the template alias that you want to describe. If you name a specific alias, you
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template alias that you're
    ///   - templateId: The ID for the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTemplateAlias(
        aliasName: String,
        awsAccountId: String,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTemplateAliasResponse {
        let input = DescribeTemplateAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId
        )
        return try await self.describeTemplateAlias(input, logger: logger)
    }

    /// Provides a detailed description of the definition of a template.  If you do not need to know details about the content of a template, for instance if you
    /// 				are trying to check the status of a recently created or updated template, use the
    /// 				 DescribeTemplate instead.
    ///
    @Sendable
    @inlinable
    public func describeTemplateDefinition(_ input: DescribeTemplateDefinitionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTemplateDefinitionResponse {
        try await self.client.execute(
            operation: "DescribeTemplateDefinition", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/definition", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Provides a detailed description of the definition of a template.  If you do not need to know details about the content of a template, for instance if you
    /// 				are trying to check the status of a recently created or updated template, use the
    /// 				 DescribeTemplate instead.
    ///
    ///
    /// Parameters:
    ///   - aliasName: The alias of the template that you want to describe. If you name a specific alias, you
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template. You must be using the
    ///   - templateId: The ID of the template that you're describing.
    ///   - versionNumber: The version number of the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTemplateDefinition(
        aliasName: String? = nil,
        awsAccountId: String,
        templateId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTemplateDefinitionResponse {
        let input = DescribeTemplateDefinitionRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId, 
            versionNumber: versionNumber
        )
        return try await self.describeTemplateDefinition(input, logger: logger)
    }

    /// Describes read and write permissions on a template.
    @Sendable
    @inlinable
    public func describeTemplatePermissions(_ input: DescribeTemplatePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTemplatePermissionsResponse {
        try await self.client.execute(
            operation: "DescribeTemplatePermissions", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes read and write permissions on a template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template that you're describing.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTemplatePermissions(
        awsAccountId: String,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTemplatePermissionsResponse {
        let input = DescribeTemplatePermissionsRequest(
            awsAccountId: awsAccountId, 
            templateId: templateId
        )
        return try await self.describeTemplatePermissions(input, logger: logger)
    }

    /// Describes a theme.
    @Sendable
    @inlinable
    public func describeTheme(_ input: DescribeThemeRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeThemeResponse {
        try await self.client.execute(
            operation: "DescribeTheme", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a theme.
    ///
    /// Parameters:
    ///   - aliasName: The alias of the theme that you want to describe. If you name a specific alias, you
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme that you're describing.
    ///   - themeId: The ID for the theme.
    ///   - versionNumber: The version number for the version to describe. If a VersionNumber parameter
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTheme(
        aliasName: String? = nil,
        awsAccountId: String,
        themeId: String,
        versionNumber: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeThemeResponse {
        let input = DescribeThemeRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            themeId: themeId, 
            versionNumber: versionNumber
        )
        return try await self.describeTheme(input, logger: logger)
    }

    /// Describes the alias for a theme.
    @Sendable
    @inlinable
    public func describeThemeAlias(_ input: DescribeThemeAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeThemeAliasResponse {
        try await self.client.execute(
            operation: "DescribeThemeAlias", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the alias for a theme.
    ///
    /// Parameters:
    ///   - aliasName: The name of the theme alias that you want to describe.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme alias that you're
    ///   - themeId: The ID for the theme.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeThemeAlias(
        aliasName: String,
        awsAccountId: String,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeThemeAliasResponse {
        let input = DescribeThemeAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            themeId: themeId
        )
        return try await self.describeThemeAlias(input, logger: logger)
    }

    /// Describes the read and write permissions for a theme.
    @Sendable
    @inlinable
    public func describeThemePermissions(_ input: DescribeThemePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeThemePermissionsResponse {
        try await self.client.execute(
            operation: "DescribeThemePermissions", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the read and write permissions for a theme.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme that you're describing.
    ///   - themeId: The ID for the theme that you want to describe permissions for.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeThemePermissions(
        awsAccountId: String,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeThemePermissionsResponse {
        let input = DescribeThemePermissionsRequest(
            awsAccountId: awsAccountId, 
            themeId: themeId
        )
        return try await self.describeThemePermissions(input, logger: logger)
    }

    /// Describes a topic.
    @Sendable
    @inlinable
    public func describeTopic(_ input: DescribeTopicRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTopicResponse {
        try await self.client.execute(
            operation: "DescribeTopic", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - topicId: The ID of the topic that you want to describe. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTopic(
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTopicResponse {
        let input = DescribeTopicRequest(
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.describeTopic(input, logger: logger)
    }

    /// Describes the permissions of a topic.
    @Sendable
    @inlinable
    public func describeTopicPermissions(_ input: DescribeTopicPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTopicPermissionsResponse {
        try await self.client.execute(
            operation: "DescribeTopicPermissions", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the permissions of a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want described.
    ///   - topicId: The ID of the topic that you want to describe. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTopicPermissions(
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTopicPermissionsResponse {
        let input = DescribeTopicPermissionsRequest(
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.describeTopicPermissions(input, logger: logger)
    }

    /// Describes the status of a topic refresh.
    @Sendable
    @inlinable
    public func describeTopicRefresh(_ input: DescribeTopicRefreshRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTopicRefreshResponse {
        try await self.client.execute(
            operation: "DescribeTopicRefresh", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/refresh/{RefreshId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes the status of a topic refresh.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic whose refresh you want to describe.
    ///   - refreshId: The ID of the refresh, which is performed when the topic is created or updated.
    ///   - topicId: The ID of the topic that you want to describe. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTopicRefresh(
        awsAccountId: String,
        refreshId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTopicRefreshResponse {
        let input = DescribeTopicRefreshRequest(
            awsAccountId: awsAccountId, 
            refreshId: refreshId, 
            topicId: topicId
        )
        return try await self.describeTopicRefresh(input, logger: logger)
    }

    /// Deletes a topic refresh schedule.
    @Sendable
    @inlinable
    public func describeTopicRefreshSchedule(_ input: DescribeTopicRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeTopicRefreshScheduleResponse {
        try await self.client.execute(
            operation: "DescribeTopicRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a topic refresh schedule.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - datasetId: The ID of the dataset.
    ///   - topicId: The ID of the topic that contains the refresh schedule that you want to describe. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeTopicRefreshSchedule(
        awsAccountId: String,
        datasetId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeTopicRefreshScheduleResponse {
        let input = DescribeTopicRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            datasetId: datasetId, 
            topicId: topicId
        )
        return try await self.describeTopicRefreshSchedule(input, logger: logger)
    }

    /// Returns information about a user, given the user name.
    @Sendable
    @inlinable
    public func describeUser(_ input: DescribeUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeUserResponse {
        try await self.client.execute(
            operation: "DescribeUser", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Returns information about a user, given the user name.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - userName: The name of the user that you want to describe.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeUser(
        awsAccountId: String,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeUserResponse {
        let input = DescribeUserRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace, 
            userName: userName
        )
        return try await self.describeUser(input, logger: logger)
    }

    /// Describes a VPC connection.
    @Sendable
    @inlinable
    public func describeVPCConnection(_ input: DescribeVPCConnectionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeVPCConnectionResponse {
        try await self.client.execute(
            operation: "DescribeVPCConnection", 
            path: "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Describes a VPC connection.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account that contains the VPC connection that
    ///   - vpcConnectionId: The ID of the VPC connection that
    ///   - logger: Logger use during operation
    @inlinable
    public func describeVPCConnection(
        awsAccountId: String,
        vpcConnectionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeVPCConnectionResponse {
        let input = DescribeVPCConnectionRequest(
            awsAccountId: awsAccountId, 
            vpcConnectionId: vpcConnectionId
        )
        return try await self.describeVPCConnection(input, logger: logger)
    }

    /// Generates an embed URL that you can use to embed an Amazon QuickSight dashboard or visual in your website, without having to register any reader users. Before you use this action, make sure that you have configured the dashboards and permissions. The following rules apply to the generated URL:   It contains a temporary bearer token. It is valid for 5 minutes after it is generated. Once redeemed within this period, it cannot be re-used again.   The URL validity period should not be confused with the actual session lifetime that can be customized using the  SessionLifetimeInMinutes parameter. The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.   You are charged only when the URL is used or there is interaction with Amazon QuickSight.   For more information, see Embedded Analytics in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    @Sendable
    @inlinable
    public func generateEmbedUrlForAnonymousUser(_ input: GenerateEmbedUrlForAnonymousUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GenerateEmbedUrlForAnonymousUserResponse {
        try await self.client.execute(
            operation: "GenerateEmbedUrlForAnonymousUser", 
            path: "/accounts/{AwsAccountId}/embed-url/anonymous-user", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Generates an embed URL that you can use to embed an Amazon QuickSight dashboard or visual in your website, without having to register any reader users. Before you use this action, make sure that you have configured the dashboards and permissions. The following rules apply to the generated URL:   It contains a temporary bearer token. It is valid for 5 minutes after it is generated. Once redeemed within this period, it cannot be re-used again.   The URL validity period should not be confused with the actual session lifetime that can be customized using the  SessionLifetimeInMinutes parameter. The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.   You are charged only when the URL is used or there is interaction with Amazon QuickSight.   For more information, see Embedded Analytics in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    ///
    /// Parameters:
    ///   - allowedDomains: The domains that you want to add to the allow list for access to the generated URL that is then embedded. This optional parameter overrides the static domains that are configured in the Manage Quick Sight menu in the Amazon Quick Sight console. Instead, it allows only the domains that you include in this parameter. You can list up to three domains or subdomains in each API call. To include all subdomains under a specific domain to the allow list, use *. For example, https://*.sapp.amazon.com includes all subdomains under https://sapp.amazon.com.
    ///   - authorizedResourceArns: The Amazon Resource Names (ARNs) for the Quick Sight resources that the user is authorized to access during the lifetime of the session. If you choose Dashboard embedding experience, pass the list of dashboard ARNs in the account that you want the user to be able to view. If you want to make changes to the theme of your embedded content, pass a list of theme ARNs that the anonymous users need access to. Currently, you can pass up to 25 theme ARNs in each API call.
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the dashboard that you're embedding.
    ///   - experienceConfiguration: The configuration of the experience that you are embedding.
    ///   - namespace: The Amazon Quick Sight namespace that the anonymous user virtually belongs to. If you are not using an Amazon QuickSight custom namespace, set this to default.
    ///   - sessionLifetimeInMinutes: How many minutes the session is valid. The session lifetime must be in [15-600] minutes range.
    ///   - sessionTags: The session tags used for row-level security. Before you use this parameter, make sure that you have configured the relevant datasets using the DataSet$RowLevelPermissionTagConfiguration parameter so that session tags can be used to provide row-level security. These are not the tags used for the Amazon Web Services resource tagging feature. For more information, see Using Row-Level Security (RLS) with Tagsin the Amazon Quick Sight User Guide.
    ///   - logger: Logger use during operation
    @inlinable
    public func generateEmbedUrlForAnonymousUser(
        allowedDomains: [String]? = nil,
        authorizedResourceArns: [String],
        awsAccountId: String,
        experienceConfiguration: AnonymousUserEmbeddingExperienceConfiguration,
        namespace: String,
        sessionLifetimeInMinutes: Int64? = nil,
        sessionTags: [SessionTag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GenerateEmbedUrlForAnonymousUserResponse {
        let input = GenerateEmbedUrlForAnonymousUserRequest(
            allowedDomains: allowedDomains, 
            authorizedResourceArns: authorizedResourceArns, 
            awsAccountId: awsAccountId, 
            experienceConfiguration: experienceConfiguration, 
            namespace: namespace, 
            sessionLifetimeInMinutes: sessionLifetimeInMinutes, 
            sessionTags: sessionTags
        )
        return try await self.generateEmbedUrlForAnonymousUser(input, logger: logger)
    }

    /// Generates an embed URL that you can use to embed an Amazon QuickSight experience in your website. This action can be used for any type of user registered in an Amazon QuickSight account. Before you use this action, make sure that you have configured the relevant Amazon QuickSight resource and permissions. The following rules apply to the generated URL:   It contains a temporary bearer token. It is valid for 5 minutes after it is generated. Once redeemed within this period, it cannot be re-used again.   The URL validity period should not be confused with the actual session lifetime that can be customized using the  SessionLifetimeInMinutes parameter. The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.   You are charged only when the URL is used or there is interaction with Amazon QuickSight.   For more information, see Embedded Analytics in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    @Sendable
    @inlinable
    public func generateEmbedUrlForRegisteredUser(_ input: GenerateEmbedUrlForRegisteredUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GenerateEmbedUrlForRegisteredUserResponse {
        try await self.client.execute(
            operation: "GenerateEmbedUrlForRegisteredUser", 
            path: "/accounts/{AwsAccountId}/embed-url/registered-user", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Generates an embed URL that you can use to embed an Amazon QuickSight experience in your website. This action can be used for any type of user registered in an Amazon QuickSight account. Before you use this action, make sure that you have configured the relevant Amazon QuickSight resource and permissions. The following rules apply to the generated URL:   It contains a temporary bearer token. It is valid for 5 minutes after it is generated. Once redeemed within this period, it cannot be re-used again.   The URL validity period should not be confused with the actual session lifetime that can be customized using the  SessionLifetimeInMinutes parameter. The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.   You are charged only when the URL is used or there is interaction with Amazon QuickSight.   For more information, see Embedded Analytics in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    ///
    /// Parameters:
    ///   - allowedDomains: The domains that you want to add to the allow list for access to the generated URL that is then embedded. This optional parameter overrides the static domains that are configured in the Manage Quick Sight menu in the Amazon Quick Sight console. Instead, it allows only the domains that you include in this parameter. You can list up to three domains or subdomains in each API call. To include all subdomains under a specific domain to the allow list, use *. For example, https://*.sapp.amazon.com includes all subdomains under https://sapp.amazon.com.
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the dashboard that you're embedding.
    ///   - experienceConfiguration: The experience that you want to embed. For registered users, you can embed QuickSight dashboards, Amazon Quick Sight visuals, the Amazon Quick Sight Q search bar, the Amazon Quick Sight Generative Q&A experience, or the entire Amazon Quick Sight console.
    ///   - sessionLifetimeInMinutes: How many minutes the session is valid. The session lifetime must be in [15-600] minutes range.
    ///   - userArn: The Amazon Resource Name for the registered user.
    ///   - logger: Logger use during operation
    @inlinable
    public func generateEmbedUrlForRegisteredUser(
        allowedDomains: [String]? = nil,
        awsAccountId: String,
        experienceConfiguration: RegisteredUserEmbeddingExperienceConfiguration,
        sessionLifetimeInMinutes: Int64? = nil,
        userArn: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GenerateEmbedUrlForRegisteredUserResponse {
        let input = GenerateEmbedUrlForRegisteredUserRequest(
            allowedDomains: allowedDomains, 
            awsAccountId: awsAccountId, 
            experienceConfiguration: experienceConfiguration, 
            sessionLifetimeInMinutes: sessionLifetimeInMinutes, 
            userArn: userArn
        )
        return try await self.generateEmbedUrlForRegisteredUser(input, logger: logger)
    }

    /// Generates an embed URL that you can use to embed an Amazon Quick Sight experience in your website. This action can be used for any type of user that is registered in an Amazon Quick Sight account that uses IAM Identity Center for authentication. This API requires identity-enhanced IAM Role sessions for the authenticated user that the API call is being made for. This API uses trusted identity propagation to ensure that an end user is authenticated and receives the embed URL that is specific to that user. The IAM Identity Center application that the user has logged into needs to have trusted Identity Propagation enabled for Amazon Quick Sight with the scope value set to quicksight:read. Before you use this action, make sure that you have configured the relevant Amazon Quick Sight resource and permissions.
    @Sendable
    @inlinable
    public func generateEmbedUrlForRegisteredUserWithIdentity(_ input: GenerateEmbedUrlForRegisteredUserWithIdentityRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GenerateEmbedUrlForRegisteredUserWithIdentityResponse {
        try await self.client.execute(
            operation: "GenerateEmbedUrlForRegisteredUserWithIdentity", 
            path: "/accounts/{AwsAccountId}/embed-url/registered-user-with-identity", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Generates an embed URL that you can use to embed an Amazon Quick Sight experience in your website. This action can be used for any type of user that is registered in an Amazon Quick Sight account that uses IAM Identity Center for authentication. This API requires identity-enhanced IAM Role sessions for the authenticated user that the API call is being made for. This API uses trusted identity propagation to ensure that an end user is authenticated and receives the embed URL that is specific to that user. The IAM Identity Center application that the user has logged into needs to have trusted Identity Propagation enabled for Amazon Quick Sight with the scope value set to quicksight:read. Before you use this action, make sure that you have configured the relevant Amazon Quick Sight resource and permissions.
    ///
    /// Parameters:
    ///   - allowedDomains: A list of domains to be allowed to generate the embed URL.
    ///   - awsAccountId: The ID of the Amazon Web Services registered user.
    ///   - experienceConfiguration: 
    ///   - sessionLifetimeInMinutes: The validity of the session in minutes.
    ///   - logger: Logger use during operation
    @inlinable
    public func generateEmbedUrlForRegisteredUserWithIdentity(
        allowedDomains: [String]? = nil,
        awsAccountId: String,
        experienceConfiguration: RegisteredUserEmbeddingExperienceConfiguration,
        sessionLifetimeInMinutes: Int64? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GenerateEmbedUrlForRegisteredUserWithIdentityResponse {
        let input = GenerateEmbedUrlForRegisteredUserWithIdentityRequest(
            allowedDomains: allowedDomains, 
            awsAccountId: awsAccountId, 
            experienceConfiguration: experienceConfiguration, 
            sessionLifetimeInMinutes: sessionLifetimeInMinutes
        )
        return try await self.generateEmbedUrlForRegisteredUserWithIdentity(input, logger: logger)
    }

    /// Generates a temporary session URL and authorization code(bearer token) that you can use to embed an Amazon Quick Sight read-only dashboard in your website or application. Before you use this command, make sure that you have configured the dashboards and permissions.  Currently, you can use GetDashboardEmbedURL only from the server, not from the user's browser. The following rules apply to the generated URL:   They must be used together.   They can be used one time only.   They are valid for 5 minutes after you run this command.   You are charged only when the URL is used or there is interaction with QuickSight.   The resulting user session is valid for 15 minutes (default) up to 10 hours (maximum). You can use the optional SessionLifetimeInMinutes parameter to customize session duration.   For more information, see Embedding Analytics Using GetDashboardEmbedUrl in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    @Sendable
    @inlinable
    public func getDashboardEmbedUrl(_ input: GetDashboardEmbedUrlRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetDashboardEmbedUrlResponse {
        try await self.client.execute(
            operation: "GetDashboardEmbedUrl", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/embed-url", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Generates a temporary session URL and authorization code(bearer token) that you can use to embed an Amazon Quick Sight read-only dashboard in your website or application. Before you use this command, make sure that you have configured the dashboards and permissions.  Currently, you can use GetDashboardEmbedURL only from the server, not from the user's browser. The following rules apply to the generated URL:   They must be used together.   They can be used one time only.   They are valid for 5 minutes after you run this command.   You are charged only when the URL is used or there is interaction with QuickSight.   The resulting user session is valid for 15 minutes (default) up to 10 hours (maximum). You can use the optional SessionLifetimeInMinutes parameter to customize session duration.   For more information, see Embedding Analytics Using GetDashboardEmbedUrl in the Amazon QuickSight User Guide. For more information about the high-level steps for embedding and for an interactive demo of the ways you can customize embedding, visit the Amazon QuickSight Developer Portal.
    ///
    /// Parameters:
    ///   - additionalDashboardIds: A list of one or more dashboard IDs that you want anonymous users to have tempporary access to. Currently, the IdentityType parameter must be set to ANONYMOUS because other identity types authenticate as QuickSight or IAM users. For example, if you set "--dashboard-id dash_id1 --dashboard-id dash_id2 dash_id3 identity-type ANONYMOUS", the session can access all three dashboards.
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the dashboard that you're embedding.
    ///   - dashboardId: The ID for the dashboard, also added to the Identity and Access Management (IAM) policy.
    ///   - identityType: The authentication method that the user uses to sign in.
    ///   - namespace: The Amazon Quick Sight namespace that contains the dashboard IDs in this request. If you're not using a custom namespace, set Namespace = default.
    ///   - resetDisabled: Remove the reset button on the embedded dashboard. The default is FALSE, which enables the reset button.
    ///   - sessionLifetimeInMinutes: How many minutes the session is valid. The session lifetime must be 15-600 minutes.
    ///   - statePersistenceEnabled: Adds persistence of state for the user session in an embedded dashboard. Persistence applies to the sheet and the parameter settings. These are control settings that the dashboard subscriber (Amazon Quick Sight reader) chooses while viewing the dashboard. If this is set to TRUE, the settings are the same when the subscriber reopens the same dashboard URL. The state is stored in Amazon Quick Sight, not in a browser cookie. If this is set to FALSE, the state of the user session is not persisted. The default is FALSE.
    ///   - undoRedoDisabled: Remove the undo/redo button on the embedded dashboard. The default is FALSE, which enables the undo/redo button.
    ///   - userArn: The Amazon QuickSight user's Amazon Resource Name (ARN), for use with QUICKSIGHT identity type. You can use this for any Amazon QuickSight users in your account (readers, authors, or admins) authenticated as one of the following:   Active Directory (AD) users or group members   Invited nonfederated users   IAM users and IAM role-based sessions authenticated through Federated Single Sign-On using SAML, OpenID Connect, or IAM federation.   Omit this parameter for users in the third group – IAM users and IAM role-based sessions.
    ///   - logger: Logger use during operation
    @inlinable
    public func getDashboardEmbedUrl(
        additionalDashboardIds: [String]? = nil,
        awsAccountId: String,
        dashboardId: String,
        identityType: EmbeddingIdentityType,
        namespace: String? = nil,
        resetDisabled: Bool? = nil,
        sessionLifetimeInMinutes: Int64? = nil,
        statePersistenceEnabled: Bool? = nil,
        undoRedoDisabled: Bool? = nil,
        userArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetDashboardEmbedUrlResponse {
        let input = GetDashboardEmbedUrlRequest(
            additionalDashboardIds: additionalDashboardIds, 
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            identityType: identityType, 
            namespace: namespace, 
            resetDisabled: resetDisabled, 
            sessionLifetimeInMinutes: sessionLifetimeInMinutes, 
            statePersistenceEnabled: statePersistenceEnabled, 
            undoRedoDisabled: undoRedoDisabled, 
            userArn: userArn
        )
        return try await self.getDashboardEmbedUrl(input, logger: logger)
    }

    /// Retrieves the metadata of a flow, not including its definition specifying the steps.
    @Sendable
    @inlinable
    public func getFlowMetadata(_ input: GetFlowMetadataInput, logger: Logger = AWSClient.loggingDisabled) async throws -> GetFlowMetadataOutput {
        try await self.client.execute(
            operation: "GetFlowMetadata", 
            path: "/accounts/{AwsAccountId}/flows/{FlowId}/metadata", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the metadata of a flow, not including its definition specifying the steps.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the flow that you are getting metadata for.
    ///   - flowId: The unique identifier of the flow.
    ///   - logger: Logger use during operation
    @inlinable
    public func getFlowMetadata(
        awsAccountId: String,
        flowId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetFlowMetadataOutput {
        let input = GetFlowMetadataInput(
            awsAccountId: awsAccountId, 
            flowId: flowId
        )
        return try await self.getFlowMetadata(input, logger: logger)
    }

    /// Get permissions for a flow.
    @Sendable
    @inlinable
    public func getFlowPermissions(_ input: GetFlowPermissionsInput, logger: Logger = AWSClient.loggingDisabled) async throws -> GetFlowPermissionsOutput {
        try await self.client.execute(
            operation: "GetFlowPermissions", 
            path: "/accounts/{AwsAccountId}/flows/{FlowId}/permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Get permissions for a flow.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the flow that you are getting permissions for.
    ///   - flowId: The unique identifier of the flow to get permissions from.
    ///   - logger: Logger use during operation
    @inlinable
    public func getFlowPermissions(
        awsAccountId: String,
        flowId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetFlowPermissionsOutput {
        let input = GetFlowPermissionsInput(
            awsAccountId: awsAccountId, 
            flowId: flowId
        )
        return try await self.getFlowPermissions(input, logger: logger)
    }

    /// Generates a session URL and authorization code that you can use to embed the Amazon Amazon Quick Sight console in your web server code. Use GetSessionEmbedUrl where you want to provide an authoring portal that allows users to create data sources, datasets, analyses, and dashboards. The users who access an embedded Amazon Quick Sight console need belong to the author or admin security cohort. If you want to restrict permissions to some of these features, add a custom permissions profile to the user with the  UpdateUser API operation. Use  RegisterUser API operation to add a new user with a custom permission profile attached. For more information, see the following sections in the Amazon QuickSight User Guide:    Embedding Analytics     Customizing Access to the Amazon QuickSight Console
    @Sendable
    @inlinable
    public func getSessionEmbedUrl(_ input: GetSessionEmbedUrlRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSessionEmbedUrlResponse {
        try await self.client.execute(
            operation: "GetSessionEmbedUrl", 
            path: "/accounts/{AwsAccountId}/session-embed-url", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Generates a session URL and authorization code that you can use to embed the Amazon Amazon Quick Sight console in your web server code. Use GetSessionEmbedUrl where you want to provide an authoring portal that allows users to create data sources, datasets, analyses, and dashboards. The users who access an embedded Amazon Quick Sight console need belong to the author or admin security cohort. If you want to restrict permissions to some of these features, add a custom permissions profile to the user with the  UpdateUser API operation. Use  RegisterUser API operation to add a new user with a custom permission profile attached. For more information, see the following sections in the Amazon QuickSight User Guide:    Embedding Analytics     Customizing Access to the Amazon QuickSight Console
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account associated with your Amazon Quick Sight subscription.
    ///   - entryPoint: The URL you use to access the embedded session. The entry point URL is constrained to the following paths:    /start     /start/analyses     /start/dashboards     /start/favorites     /dashboards/DashboardId - where DashboardId is the actual ID key from the Amazon Quick Sight console URL of the dashboard    /analyses/AnalysisId - where AnalysisId is the actual ID key from the Amazon Quick Sight console URL of the analysis
    ///   - sessionLifetimeInMinutes: How many minutes the session is valid. The session lifetime must be 15-600 minutes.
    ///   - userArn: The Amazon QuickSight user's Amazon Resource Name (ARN), for use with QUICKSIGHT identity type. You can use this for any type of Amazon QuickSight users in your account (readers, authors, or admins). They need to be authenticated as one of the following:   Active Directory (AD) users or group members   Invited nonfederated users   IAM users and IAM role-based sessions authenticated through Federated Single Sign-On using SAML, OpenID Connect, or IAM federation   Omit this parameter for users in the third group, IAM users and IAM role-based sessions.
    ///   - logger: Logger use during operation
    @inlinable
    public func getSessionEmbedUrl(
        awsAccountId: String,
        entryPoint: String? = nil,
        sessionLifetimeInMinutes: Int64? = nil,
        userArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSessionEmbedUrlResponse {
        let input = GetSessionEmbedUrlRequest(
            awsAccountId: awsAccountId, 
            entryPoint: entryPoint, 
            sessionLifetimeInMinutes: sessionLifetimeInMinutes, 
            userArn: userArn
        )
        return try await self.getSessionEmbedUrl(input, logger: logger)
    }

    /// Lists all action connectors in the specified Amazon Web Services account. Returns summary information for each connector including its name, type, creation time, and status.
    @Sendable
    @inlinable
    public func listActionConnectors(_ input: ListActionConnectorsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListActionConnectorsResponse {
        try await self.client.execute(
            operation: "ListActionConnectors", 
            path: "/accounts/{AwsAccountId}/action-connectors", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all action connectors in the specified Amazon Web Services account. Returns summary information for each connector including its name, type, creation time, and status.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID for which to list action connectors.
    ///   - maxResults: The maximum number of action connectors to return in a single response. Valid range is 1 to 100.
    ///   - nextToken: A pagination token to retrieve the next set of results. Use the token returned from a previous call to continue listing action connectors.
    ///   - logger: Logger use during operation
    @inlinable
    public func listActionConnectors(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListActionConnectorsResponse {
        let input = ListActionConnectorsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listActionConnectors(input, logger: logger)
    }

    /// Lists Amazon Quick Sight analyses that exist in the specified Amazon Web Services account.
    @Sendable
    @inlinable
    public func listAnalyses(_ input: ListAnalysesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListAnalysesResponse {
        try await self.client.execute(
            operation: "ListAnalyses", 
            path: "/accounts/{AwsAccountId}/analyses", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists Amazon Quick Sight analyses that exist in the specified Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analyses.
    ///   - maxResults: The maximum number of results to return.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func listAnalyses(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListAnalysesResponse {
        let input = ListAnalysesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listAnalyses(input, logger: logger)
    }

    /// Lists all asset bundle export jobs that have been taken place in the last 14 days. Jobs created more than 14 days ago are deleted forever and are not returned. If you are using the same job ID for multiple jobs, ListAssetBundleExportJobs only returns the most recent job that uses the repeated job ID.
    @Sendable
    @inlinable
    public func listAssetBundleExportJobs(_ input: ListAssetBundleExportJobsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListAssetBundleExportJobsResponse {
        try await self.client.execute(
            operation: "ListAssetBundleExportJobs", 
            path: "/accounts/{AwsAccountId}/asset-bundle-export-jobs", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all asset bundle export jobs that have been taken place in the last 14 days. Jobs created more than 14 days ago are deleted forever and are not returned. If you are using the same job ID for multiple jobs, ListAssetBundleExportJobs only returns the most recent job that uses the repeated job ID.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the export jobs were executed in.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listAssetBundleExportJobs(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListAssetBundleExportJobsResponse {
        let input = ListAssetBundleExportJobsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listAssetBundleExportJobs(input, logger: logger)
    }

    /// Lists all asset bundle import jobs that have taken place in the last 14 days. Jobs created more than 14 days ago are deleted forever and are not returned. If you are using the same job ID for multiple jobs, ListAssetBundleImportJobs only returns the most recent job that uses the repeated job ID.
    @Sendable
    @inlinable
    public func listAssetBundleImportJobs(_ input: ListAssetBundleImportJobsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListAssetBundleImportJobsResponse {
        try await self.client.execute(
            operation: "ListAssetBundleImportJobs", 
            path: "/accounts/{AwsAccountId}/asset-bundle-import-jobs", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all asset bundle import jobs that have taken place in the last 14 days. Jobs created more than 14 days ago are deleted forever and are not returned. If you are using the same job ID for multiple jobs, ListAssetBundleImportJobs only returns the most recent job that uses the repeated job ID.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the import jobs were executed in.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listAssetBundleImportJobs(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListAssetBundleImportJobsResponse {
        let input = ListAssetBundleImportJobsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listAssetBundleImportJobs(input, logger: logger)
    }

    /// Lists all brands in an Quick Sight account.
    @Sendable
    @inlinable
    public func listBrands(_ input: ListBrandsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListBrandsResponse {
        try await self.client.execute(
            operation: "ListBrands", 
            path: "/accounts/{AwsAccountId}/brands", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all brands in an Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brands that you want to list.
    ///   - maxResults: The maximum number of results to be returned in a single request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listBrands(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListBrandsResponse {
        let input = ListBrandsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listBrands(input, logger: logger)
    }

    /// Returns a list of all the custom permissions profiles.
    @Sendable
    @inlinable
    public func listCustomPermissions(_ input: ListCustomPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListCustomPermissionsResponse {
        try await self.client.execute(
            operation: "ListCustomPermissions", 
            path: "/accounts/{AwsAccountId}/custom-permissions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Returns a list of all the custom permissions profiles.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permissions profiles that you want to list.
    ///   - maxResults: The maximum number of results to return.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listCustomPermissions(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListCustomPermissionsResponse {
        let input = ListCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listCustomPermissions(input, logger: logger)
    }

    /// Lists all the versions of the dashboards in the Amazon Quick Sight subscription.
    @Sendable
    @inlinable
    public func listDashboardVersions(_ input: ListDashboardVersionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListDashboardVersionsResponse {
        try await self.client.execute(
            operation: "ListDashboardVersions", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/versions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the versions of the dashboards in the Amazon Quick Sight subscription.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're listing versions for.
    ///   - dashboardId: The ID for the dashboard.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listDashboardVersions(
        awsAccountId: String,
        dashboardId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListDashboardVersionsResponse {
        let input = ListDashboardVersionsRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listDashboardVersions(input, logger: logger)
    }

    /// Lists dashboards in an Amazon Web Services account.
    @Sendable
    @inlinable
    public func listDashboards(_ input: ListDashboardsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListDashboardsResponse {
        try await self.client.execute(
            operation: "ListDashboards", 
            path: "/accounts/{AwsAccountId}/dashboards", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists dashboards in an Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboards that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listDashboards(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListDashboardsResponse {
        let input = ListDashboardsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listDashboards(input, logger: logger)
    }

    /// Lists all of the datasets belonging to the current Amazon Web Services account in an
    /// 				Amazon Web Services Region. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/*.
    @Sendable
    @inlinable
    public func listDataSets(_ input: ListDataSetsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListDataSetsResponse {
        try await self.client.execute(
            operation: "ListDataSets", 
            path: "/accounts/{AwsAccountId}/data-sets", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all of the datasets belonging to the current Amazon Web Services account in an
    /// 				Amazon Web Services Region. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/*.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listDataSets(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListDataSetsResponse {
        let input = ListDataSetsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listDataSets(input, logger: logger)
    }

    /// Lists data sources in current Amazon Web Services Region that belong to this Amazon Web Services account.
    @Sendable
    @inlinable
    public func listDataSources(_ input: ListDataSourcesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListDataSourcesResponse {
        try await self.client.execute(
            operation: "ListDataSources", 
            path: "/accounts/{AwsAccountId}/data-sources", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists data sources in current Amazon Web Services Region that belong to this Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listDataSources(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListDataSourcesResponse {
        let input = ListDataSourcesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listDataSources(input, logger: logger)
    }

    /// Lists flows in an Amazon Web Services account.
    @Sendable
    @inlinable
    public func listFlows(_ input: ListFlowsInput, logger: Logger = AWSClient.loggingDisabled) async throws -> ListFlowsOutput {
        try await self.client.execute(
            operation: "ListFlows", 
            path: "/accounts/{AwsAccountId}/flows", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists flows in an Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the flow list that you are getting.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token to request the next set of results, or null if you want to retrieve the first set.
    ///   - logger: Logger use during operation
    @inlinable
    public func listFlows(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListFlowsOutput {
        let input = ListFlowsInput(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listFlows(input, logger: logger)
    }

    /// List all assets (DASHBOARD, ANALYSIS, and DATASET) in a folder.
    @Sendable
    @inlinable
    public func listFolderMembers(_ input: ListFolderMembersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListFolderMembersResponse {
        try await self.client.execute(
            operation: "ListFolderMembers", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/members", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// List all assets (DASHBOARD, ANALYSIS, and DATASET) in a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listFolderMembers(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListFolderMembersResponse {
        let input = ListFolderMembersRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listFolderMembers(input, logger: logger)
    }

    /// Lists all folders in an account.
    @Sendable
    @inlinable
    public func listFolders(_ input: ListFoldersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListFoldersResponse {
        try await self.client.execute(
            operation: "ListFolders", 
            path: "/accounts/{AwsAccountId}/folders", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all folders in an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listFolders(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListFoldersResponse {
        let input = ListFoldersRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listFolders(input, logger: logger)
    }

    /// List all folders that a resource is a member of.
    @Sendable
    @inlinable
    public func listFoldersForResource(_ input: ListFoldersForResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListFoldersForResourceResponse {
        try await self.client.execute(
            operation: "ListFoldersForResource", 
            path: "/accounts/{AwsAccountId}/resource/{ResourceArn}/folders", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// List all folders that a resource is a member of.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the resource.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - resourceArn: The Amazon Resource Name (ARN) the resource whose folders you need to list.
    ///   - logger: Logger use during operation
    @inlinable
    public func listFoldersForResource(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        resourceArn: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListFoldersForResourceResponse {
        let input = ListFoldersForResourceRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            resourceArn: resourceArn
        )
        return try await self.listFoldersForResource(input, logger: logger)
    }

    /// Lists member users in a group.
    @Sendable
    @inlinable
    public func listGroupMemberships(_ input: ListGroupMembershipsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListGroupMembershipsResponse {
        try await self.client.execute(
            operation: "ListGroupMemberships", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists member users in a group.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to see a membership list of.
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace of the group that you want a list of users from.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func listGroupMemberships(
        awsAccountId: String,
        groupName: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListGroupMembershipsResponse {
        let input = ListGroupMembershipsRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.listGroupMemberships(input, logger: logger)
    }

    /// Lists all user groups in Amazon Quick Sight.
    @Sendable
    @inlinable
    public func listGroups(_ input: ListGroupsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListGroupsResponse {
        try await self.client.execute(
            operation: "ListGroups", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all user groups in Amazon Quick Sight.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - maxResults: The maximum number of results to return.
    ///   - namespace: The namespace that you want a list of groups from.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func listGroups(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListGroupsResponse {
        let input = ListGroupsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.listGroups(input, logger: logger)
    }

    /// Lists the
    /// 			IAM policy assignments in the current Amazon Quick Sight
    /// 			account.
    @Sendable
    @inlinable
    public func listIAMPolicyAssignments(_ input: ListIAMPolicyAssignmentsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListIAMPolicyAssignmentsResponse {
        try await self.client.execute(
            operation: "ListIAMPolicyAssignments", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/v2/iam-policy-assignments", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the
    /// 			IAM policy assignments in the current Amazon Quick Sight
    /// 			account.
    ///
    /// Parameters:
    ///   - assignmentStatus: The status of the assignments.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains these IAM policy
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace for the assignments.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listIAMPolicyAssignments(
        assignmentStatus: AssignmentStatus? = nil,
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListIAMPolicyAssignmentsResponse {
        let input = ListIAMPolicyAssignmentsRequest(
            assignmentStatus: assignmentStatus, 
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.listIAMPolicyAssignments(input, logger: logger)
    }

    /// Lists all of
    /// 			the IAM policy assignments, including the Amazon
    /// 			Resource Names
    /// 			(ARNs),
    /// 			for the IAM policies assigned to the specified user and
    /// 			group,
    /// 			or groups that the user belongs to.
    @Sendable
    @inlinable
    public func listIAMPolicyAssignmentsForUser(_ input: ListIAMPolicyAssignmentsForUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListIAMPolicyAssignmentsForUserResponse {
        try await self.client.execute(
            operation: "ListIAMPolicyAssignmentsForUser", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/iam-policy-assignments", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all of
    /// 			the IAM policy assignments, including the Amazon
    /// 			Resource Names
    /// 			(ARNs),
    /// 			for the IAM policies assigned to the specified user and
    /// 			group,
    /// 			or groups that the user belongs to.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the assignments.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the assignment.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - userName: The name of the user.
    ///   - logger: Logger use during operation
    @inlinable
    public func listIAMPolicyAssignmentsForUser(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListIAMPolicyAssignmentsForUserResponse {
        let input = ListIAMPolicyAssignmentsForUserRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken, 
            userName: userName
        )
        return try await self.listIAMPolicyAssignmentsForUser(input, logger: logger)
    }

    /// Lists all services and authorized targets that the Quick Sight IAM Identity Center application can access. This operation is only supported for Quick Sight accounts that use IAM Identity Center.
    @Sendable
    @inlinable
    public func listIdentityPropagationConfigs(_ input: ListIdentityPropagationConfigsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListIdentityPropagationConfigsResponse {
        try await self.client.execute(
            operation: "ListIdentityPropagationConfigs", 
            path: "/accounts/{AwsAccountId}/identity-propagation-config", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all services and authorized targets that the Quick Sight IAM Identity Center application can access. This operation is only supported for Quick Sight accounts that use IAM Identity Center.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contain the identity propagation configurations of.
    ///   - maxResults: The maximum number of results to be returned.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listIdentityPropagationConfigs(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListIdentityPropagationConfigsResponse {
        let input = ListIdentityPropagationConfigsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listIdentityPropagationConfigs(input, logger: logger)
    }

    /// Lists the history of SPICE ingestions for a dataset. Limited to 5 TPS per user and 25 TPS per account.
    @Sendable
    @inlinable
    public func listIngestions(_ input: ListIngestionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListIngestionsResponse {
        try await self.client.execute(
            operation: "ListIngestions", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the history of SPICE ingestions for a dataset. Limited to 5 TPS per user and 25 TPS per account.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset used in the ingestion.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listIngestions(
        awsAccountId: String,
        dataSetId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListIngestionsResponse {
        let input = ListIngestionsRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listIngestions(input, logger: logger)
    }

    /// Lists the namespaces for the specified Amazon Web Services account. This operation doesn't list deleted namespaces.
    @Sendable
    @inlinable
    public func listNamespaces(_ input: ListNamespacesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListNamespacesResponse {
        try await self.client.execute(
            operation: "ListNamespaces", 
            path: "/accounts/{AwsAccountId}/namespaces", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the namespaces for the specified Amazon Web Services account. This operation doesn't list deleted namespaces.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the Quick Sight namespaces that you want to list.
    ///   - maxResults: The maximum number of results to return.
    ///   - nextToken: A unique pagination token that can be used in a subsequent request. You will receive a pagination token in the response body of a previous ListNameSpaces API call if there is more data that can be returned. To receive the data, make another ListNamespaces API call with the returned token to retrieve the next page of data. Each token is valid for 24 hours. If you try to make a ListNamespaces API call with an expired token, you will receive a HTTP 400 InvalidNextTokenException error.
    ///   - logger: Logger use during operation
    @inlinable
    public func listNamespaces(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListNamespacesResponse {
        let input = ListNamespacesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listNamespaces(input, logger: logger)
    }

    /// Lists the refresh schedules of a dataset. Each dataset can have up to 5 schedules.
    @Sendable
    @inlinable
    public func listRefreshSchedules(_ input: ListRefreshSchedulesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListRefreshSchedulesResponse {
        try await self.client.execute(
            operation: "ListRefreshSchedules", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the refresh schedules of a dataset. Each dataset can have up to 5 schedules.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - logger: Logger use during operation
    @inlinable
    public func listRefreshSchedules(
        awsAccountId: String,
        dataSetId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListRefreshSchedulesResponse {
        let input = ListRefreshSchedulesRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId
        )
        return try await self.listRefreshSchedules(input, logger: logger)
    }

    /// Lists all groups that are associated with a role.
    @Sendable
    @inlinable
    public func listRoleMemberships(_ input: ListRoleMembershipsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListRoleMembershipsResponse {
        try await self.client.execute(
            operation: "ListRoleMemberships", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all groups that are associated with a role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - maxResults: The maximum number of results to return.
    ///   - namespace: The namespace that includes the role.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - role: The name of the role.
    ///   - logger: Logger use during operation
    @inlinable
    public func listRoleMemberships(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListRoleMembershipsResponse {
        let input = ListRoleMembershipsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken, 
            role: role
        )
        return try await self.listRoleMemberships(input, logger: logger)
    }

    /// Lists the tags assigned to a resource.
    @Sendable
    @inlinable
    public func listTagsForResource(_ input: ListTagsForResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTagsForResourceResponse {
        try await self.client.execute(
            operation: "ListTagsForResource", 
            path: "/resources/{ResourceArn}/tags", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the tags assigned to a resource.
    ///
    /// Parameters:
    ///   - resourceArn: The Amazon Resource Name (ARN) of the resource that you want a list of tags
    ///   - logger: Logger use during operation
    @inlinable
    public func listTagsForResource(
        resourceArn: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTagsForResourceResponse {
        let input = ListTagsForResourceRequest(
            resourceArn: resourceArn
        )
        return try await self.listTagsForResource(input, logger: logger)
    }

    /// Lists all the aliases of a template.
    @Sendable
    @inlinable
    public func listTemplateAliases(_ input: ListTemplateAliasesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTemplateAliasesResponse {
        try await self.client.execute(
            operation: "ListTemplateAliases", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the aliases of a template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template aliases that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTemplateAliases(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTemplateAliasesResponse {
        let input = ListTemplateAliasesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            templateId: templateId
        )
        return try await self.listTemplateAliases(input, logger: logger)
    }

    /// Lists all the versions of the templates in the current Amazon Quick Sight account.
    @Sendable
    @inlinable
    public func listTemplateVersions(_ input: ListTemplateVersionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTemplateVersionsResponse {
        try await self.client.execute(
            operation: "ListTemplateVersions", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/versions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the versions of the templates in the current Amazon Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the templates that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTemplateVersions(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTemplateVersionsResponse {
        let input = ListTemplateVersionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            templateId: templateId
        )
        return try await self.listTemplateVersions(input, logger: logger)
    }

    /// Lists all the templates in the current Amazon Quick Sight account.
    @Sendable
    @inlinable
    public func listTemplates(_ input: ListTemplatesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTemplatesResponse {
        try await self.client.execute(
            operation: "ListTemplates", 
            path: "/accounts/{AwsAccountId}/templates", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the templates in the current Amazon Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the templates that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTemplates(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTemplatesResponse {
        let input = ListTemplatesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listTemplates(input, logger: logger)
    }

    /// Lists all the aliases of a theme.
    @Sendable
    @inlinable
    public func listThemeAliases(_ input: ListThemeAliasesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListThemeAliasesResponse {
        try await self.client.execute(
            operation: "ListThemeAliases", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the aliases of a theme.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme aliases that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - themeId: The ID for the theme.
    ///   - logger: Logger use during operation
    @inlinable
    public func listThemeAliases(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListThemeAliasesResponse {
        let input = ListThemeAliasesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            themeId: themeId
        )
        return try await self.listThemeAliases(input, logger: logger)
    }

    /// Lists all the versions of the themes in the current Amazon Web Services account.
    @Sendable
    @inlinable
    public func listThemeVersions(_ input: ListThemeVersionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListThemeVersionsResponse {
        try await self.client.execute(
            operation: "ListThemeVersions", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/versions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the versions of the themes in the current Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the themes that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - themeId: The ID for the theme.
    ///   - logger: Logger use during operation
    @inlinable
    public func listThemeVersions(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListThemeVersionsResponse {
        let input = ListThemeVersionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            themeId: themeId
        )
        return try await self.listThemeVersions(input, logger: logger)
    }

    /// Lists all the themes in the current Amazon Web Services account.
    @Sendable
    @inlinable
    public func listThemes(_ input: ListThemesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListThemesResponse {
        try await self.client.execute(
            operation: "ListThemes", 
            path: "/accounts/{AwsAccountId}/themes", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all the themes in the current Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the themes that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - type: The type of themes that you want to list. Valid options include the following:    ALL (default)- Display all existing themes.    CUSTOM - Display only the themes created by people using Amazon Quick Sight.    QUICKSIGHT - Display only the starting themes defined by Quick Sight.
    ///   - logger: Logger use during operation
    @inlinable
    public func listThemes(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        type: ThemeType? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListThemesResponse {
        let input = ListThemesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            type: type
        )
        return try await self.listThemes(input, logger: logger)
    }

    /// Lists all of the refresh schedules for a topic.
    @Sendable
    @inlinable
    public func listTopicRefreshSchedules(_ input: ListTopicRefreshSchedulesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTopicRefreshSchedulesResponse {
        try await self.client.execute(
            operation: "ListTopicRefreshSchedules", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/schedules", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all of the refresh schedules for a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic whose refresh schedule you want described.
    ///   - topicId: The ID for the topic that you want to describe. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTopicRefreshSchedules(
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTopicRefreshSchedulesResponse {
        let input = ListTopicRefreshSchedulesRequest(
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.listTopicRefreshSchedules(input, logger: logger)
    }

    /// Lists all reviewed answers for a Q Topic.
    @Sendable
    @inlinable
    public func listTopicReviewedAnswers(_ input: ListTopicReviewedAnswersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTopicReviewedAnswersResponse {
        try await self.client.execute(
            operation: "ListTopicReviewedAnswers", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/reviewed-answers", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all reviewed answers for a Q Topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that containd the reviewed answers that you want listed.
    ///   - topicId: The ID for the topic that contains the reviewed answer that you want to list. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTopicReviewedAnswers(
        awsAccountId: String,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTopicReviewedAnswersResponse {
        let input = ListTopicReviewedAnswersRequest(
            awsAccountId: awsAccountId, 
            topicId: topicId
        )
        return try await self.listTopicReviewedAnswers(input, logger: logger)
    }

    /// Lists all of the topics within an account.
    @Sendable
    @inlinable
    public func listTopics(_ input: ListTopicsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTopicsResponse {
        try await self.client.execute(
            operation: "ListTopics", 
            path: "/accounts/{AwsAccountId}/topics", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all of the topics within an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topics that you want to list.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTopics(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTopicsResponse {
        let input = ListTopicsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listTopics(input, logger: logger)
    }

    /// Lists the Amazon Quick Sight groups that an Amazon Quick Sight user is a member of.
    @Sendable
    @inlinable
    public func listUserGroups(_ input: ListUserGroupsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListUserGroupsResponse {
        try await self.client.execute(
            operation: "ListUserGroups", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/groups", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the Amazon Quick Sight groups that an Amazon Quick Sight user is a member of.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID that the user is in. Currently, you use the ID for the Amazon Web Services account
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - userName: The Amazon Quick Sight user name that you want to list group memberships for.
    ///   - logger: Logger use during operation
    @inlinable
    public func listUserGroups(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListUserGroupsResponse {
        let input = ListUserGroupsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken, 
            userName: userName
        )
        return try await self.listUserGroups(input, logger: logger)
    }

    /// Returns a list of all of the Amazon Quick Sight users belonging to this account.
    @Sendable
    @inlinable
    public func listUsers(_ input: ListUsersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListUsersResponse {
        try await self.client.execute(
            operation: "ListUsers", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Returns a list of all of the Amazon Quick Sight users belonging to this account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func listUsers(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListUsersResponse {
        let input = ListUsersRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.listUsers(input, logger: logger)
    }

    /// Lists all of the VPC connections in the current set Amazon Web Services Region of an
    /// 				Amazon Web Services account.
    @Sendable
    @inlinable
    public func listVPCConnections(_ input: ListVPCConnectionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVPCConnectionsResponse {
        try await self.client.execute(
            operation: "ListVPCConnections", 
            path: "/accounts/{AwsAccountId}/vpc-connections", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists all of the VPC connections in the current set Amazon Web Services Region of an
    /// 				Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account that contains the VPC connections
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVPCConnections(
        awsAccountId: String,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVPCConnectionsResponse {
        let input = ListVPCConnectionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listVPCConnections(input, logger: logger)
    }

    /// Predicts existing visuals or generates new visuals to answer a given query. This API uses trusted identity propagation to ensure that an end user is authenticated and receives the embed URL that is specific to that user. The IAM Identity Center application that the user has logged into needs to have trusted Identity Propagation enabled for QuickSight with the scope value set to quicksight:read. Before you use this action, make sure that you have configured the relevant QuickSight resource and permissions. We recommend enabling the QSearchStatus API to unlock the full potential of PredictQnA. When QSearchStatus is enabled, it first checks the specified dashboard for any existing visuals that match the question. If no matching visuals are found, PredictQnA uses generative Q&A to provide an answer. To update the QSearchStatus, see UpdateQuickSightQSearchConfiguration.
    @Sendable
    @inlinable
    public func predictQAResults(_ input: PredictQAResultsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PredictQAResultsResponse {
        try await self.client.execute(
            operation: "PredictQAResults", 
            path: "/accounts/{AwsAccountId}/qa/predict", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Predicts existing visuals or generates new visuals to answer a given query. This API uses trusted identity propagation to ensure that an end user is authenticated and receives the embed URL that is specific to that user. The IAM Identity Center application that the user has logged into needs to have trusted Identity Propagation enabled for QuickSight with the scope value set to quicksight:read. Before you use this action, make sure that you have configured the relevant QuickSight resource and permissions. We recommend enabling the QSearchStatus API to unlock the full potential of PredictQnA. When QSearchStatus is enabled, it first checks the specified dashboard for any existing visuals that match the question. If no matching visuals are found, PredictQnA uses generative Q&A to provide an answer. To update the QSearchStatus, see UpdateQuickSightQSearchConfiguration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the user wants to execute Predict QA results in.
    ///   - includeGeneratedAnswer: Indicates whether generated answers are included or excluded.
    ///   - includeQuickSightQIndex: Indicates whether Q indicies are included or excluded.
    ///   - maxTopicsToConsider: The number of maximum topics to be considered to predict QA results.
    ///   - queryText: The query text to be used to predict QA results.
    ///   - logger: Logger use during operation
    @inlinable
    public func predictQAResults(
        awsAccountId: String,
        includeGeneratedAnswer: IncludeGeneratedAnswer? = nil,
        includeQuickSightQIndex: IncludeQuickSightQIndex? = nil,
        maxTopicsToConsider: Int? = nil,
        queryText: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PredictQAResultsResponse {
        let input = PredictQAResultsRequest(
            awsAccountId: awsAccountId, 
            includeGeneratedAnswer: includeGeneratedAnswer, 
            includeQuickSightQIndex: includeQuickSightQIndex, 
            maxTopicsToConsider: maxTopicsToConsider, 
            queryText: queryText
        )
        return try await self.predictQAResults(input, logger: logger)
    }

    /// Creates or updates the dataset refresh properties for the dataset.
    @Sendable
    @inlinable
    public func putDataSetRefreshProperties(_ input: PutDataSetRefreshPropertiesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutDataSetRefreshPropertiesResponse {
        try await self.client.execute(
            operation: "PutDataSetRefreshProperties", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates or updates the dataset refresh properties for the dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - dataSetRefreshProperties: The dataset refresh properties.
    ///   - logger: Logger use during operation
    @inlinable
    public func putDataSetRefreshProperties(
        awsAccountId: String,
        dataSetId: String,
        dataSetRefreshProperties: DataSetRefreshProperties,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutDataSetRefreshPropertiesResponse {
        let input = PutDataSetRefreshPropertiesRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            dataSetRefreshProperties: dataSetRefreshProperties
        )
        return try await self.putDataSetRefreshProperties(input, logger: logger)
    }

    /// Creates an Amazon Quick Sight user whose identity is associated with the Identity and Access Management (IAM) identity or role specified in the request. When you register a new user from the Quick Sight API, Quick Sight generates a registration URL. The user accesses this registration URL to create their account. Quick Sight doesn't send a registration email to users who are registered from the Quick Sight API. If you want new users to receive a registration email, then add those users in the Quick Sight console. For more information on registering a new user in the Quick Sight console, see  Inviting users to access Quick Sight.
    @Sendable
    @inlinable
    public func registerUser(_ input: RegisterUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> RegisterUserResponse {
        try await self.client.execute(
            operation: "RegisterUser", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an Amazon Quick Sight user whose identity is associated with the Identity and Access Management (IAM) identity or role specified in the request. When you register a new user from the Quick Sight API, Quick Sight generates a registration URL. The user accesses this registration URL to create their account. Quick Sight doesn't send a registration email to users who are registered from the Quick Sight API. If you want new users to receive a registration email, then add those users in the Quick Sight console. For more information on registering a new user in the Quick Sight console, see  Inviting users to access Quick Sight.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - customFederationProviderUrl: The URL of the custom OpenID Connect (OIDC) provider that provides identity to let a user federate into Quick Sight with an associated Identity and Access Management(IAM) role. This parameter should only be used when ExternalLoginFederationProviderType parameter is set to CUSTOM_OIDC.
    ///   - customPermissionsName: (Enterprise edition only) The name of the custom permissions profile that you want to assign to this user. Customized permissions allows you to control a user's access by restricting access the following operations:   Create and update data sources   Create and update datasets   Create and update email reports   Subscribe to email reports   To add custom permissions to an existing user, use  UpdateUser instead. A set of custom permissions includes any combination of these restrictions. Currently, you need to create the profile names for custom permission sets by using the Quick Sight console. Then, you use the RegisterUser API operation to assign the named set of permissions to a Quick Sight user.  Quick Sight custom permissions are applied through IAM policies. Therefore, they override the permissions typically granted by assigning Quick Sight users to one of the default security cohorts in Quick Sight (admin, author, reader, admin pro, author pro, reader pro). This feature is available only to Quick Sight Enterprise edition subscriptions.
    ///   - email: The email address of the user that you want to register.
    ///   - externalLoginFederationProviderType: The type of supported external login provider that provides identity to let a user federate into Amazon Quick Sight with an associated Identity and Access Management(IAM) role. The type of supported external login provider can be one of the following.    COGNITO: Amazon Cognito. The provider URL is cognito-identity.amazonaws.com. When choosing the COGNITO provider type, don’t use the "CustomFederationProviderUrl" parameter which is only needed when the external provider is custom.    CUSTOM_OIDC: Custom OpenID Connect (OIDC) provider. When choosing CUSTOM_OIDC type, use the CustomFederationProviderUrl parameter to provide the custom OIDC provider URL.
    ///   - externalLoginId: The identity ID for a user in the external login provider.
    ///   - iamArn: The ARN of the IAM user or role that you are registering with Amazon Quick Sight.
    ///   - identityType: The identity type that your Quick Sight account uses to manage the identity of users.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - sessionName: You need to use this parameter only when you register one or more users using an assumed
    ///   - tags: The tags to associate with the user.
    ///   - userName: The Amazon Quick Sight user name that you want to create for the user you are
    ///   - userRole: The Amazon Quick Sight role for the user. The user role can be one of the
    ///   - logger: Logger use during operation
    @inlinable
    public func registerUser(
        awsAccountId: String,
        customFederationProviderUrl: String? = nil,
        customPermissionsName: String? = nil,
        email: String,
        externalLoginFederationProviderType: String? = nil,
        externalLoginId: String? = nil,
        iamArn: String? = nil,
        identityType: IdentityType,
        namespace: String,
        sessionName: String? = nil,
        tags: [Tag]? = nil,
        userName: String? = nil,
        userRole: UserRole,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> RegisterUserResponse {
        let input = RegisterUserRequest(
            awsAccountId: awsAccountId, 
            customFederationProviderUrl: customFederationProviderUrl, 
            customPermissionsName: customPermissionsName, 
            email: email, 
            externalLoginFederationProviderType: externalLoginFederationProviderType, 
            externalLoginId: externalLoginId, 
            iamArn: iamArn, 
            identityType: identityType, 
            namespace: namespace, 
            sessionName: sessionName, 
            tags: tags, 
            userName: userName, 
            userRole: userRole
        )
        return try await self.registerUser(input, logger: logger)
    }

    /// Restores an analysis.
    @Sendable
    @inlinable
    public func restoreAnalysis(_ input: RestoreAnalysisRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> RestoreAnalysisResponse {
        try await self.client.execute(
            operation: "RestoreAnalysis", 
            path: "/accounts/{AwsAccountId}/restore/analyses/{AnalysisId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Restores an analysis.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis that you're restoring.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis.
    ///   - restoreToFolders: A boolean value that determines if the analysis will be restored to folders that it previously resided in. A True value restores analysis back to all folders that it previously resided in. A False value restores the analysis but does not restore the analysis back to all previously resided folders. Restoring a restricted analysis requires this parameter to be set to True.
    ///   - logger: Logger use during operation
    @inlinable
    public func restoreAnalysis(
        analysisId: String,
        awsAccountId: String,
        restoreToFolders: Bool? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> RestoreAnalysisResponse {
        let input = RestoreAnalysisRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId, 
            restoreToFolders: restoreToFolders
        )
        return try await self.restoreAnalysis(input, logger: logger)
    }

    /// Searches for action connectors in the specified Amazon Web Services account using filters. You can search by connector name, type, or user permissions.
    @Sendable
    @inlinable
    public func searchActionConnectors(_ input: SearchActionConnectorsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchActionConnectorsResponse {
        try await self.client.execute(
            operation: "SearchActionConnectors", 
            path: "/accounts/{AwsAccountId}/search/action-connectors", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches for action connectors in the specified Amazon Web Services account using filters. You can search by connector name, type, or user permissions.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID in which to search for action connectors.
    ///   - filters: The search filters to apply. You can filter by connector name, type, or user permissions. Maximum of one filter is supported.
    ///   - maxResults: The maximum number of action connectors to return in a single response. Valid range is 1 to 100.
    ///   - nextToken: A pagination token to retrieve the next set of results. Use the token returned from a previous call to continue searching.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchActionConnectors(
        awsAccountId: String,
        filters: [ActionConnectorSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchActionConnectorsResponse {
        let input = SearchActionConnectorsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchActionConnectors(input, logger: logger)
    }

    /// Searches for analyses that belong to the user specified in the filter.  This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
    @Sendable
    @inlinable
    public func searchAnalyses(_ input: SearchAnalysesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchAnalysesResponse {
        try await self.client.execute(
            operation: "SearchAnalyses", 
            path: "/accounts/{AwsAccountId}/search/analyses", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches for analyses that belong to the user specified in the filter.  This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analyses that you're searching for.
    ///   - filters: The structure for the search filters that you want to apply to your search.
    ///   - maxResults: The maximum number of results to return.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchAnalyses(
        awsAccountId: String,
        filters: [AnalysisSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchAnalysesResponse {
        let input = SearchAnalysesRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchAnalyses(input, logger: logger)
    }

    /// Searches for dashboards that belong to a user.   This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
    @Sendable
    @inlinable
    public func searchDashboards(_ input: SearchDashboardsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchDashboardsResponse {
        try await self.client.execute(
            operation: "SearchDashboards", 
            path: "/accounts/{AwsAccountId}/search/dashboards", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches for dashboards that belong to a user.   This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the user whose dashboards you're searching for.
    ///   - filters: The filters to apply to the search. Currently, you can search only by user name, for example, "Filters": [ { "Name": "QUICKSIGHT_USER", "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1" } ]
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchDashboards(
        awsAccountId: String,
        filters: [DashboardSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchDashboardsResponse {
        let input = SearchDashboardsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchDashboards(input, logger: logger)
    }

    /// Use the SearchDataSets operation to search for datasets that belong to an
    /// 			account.
    @Sendable
    @inlinable
    public func searchDataSets(_ input: SearchDataSetsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchDataSetsResponse {
        try await self.client.execute(
            operation: "SearchDataSets", 
            path: "/accounts/{AwsAccountId}/search/data-sets", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the SearchDataSets operation to search for datasets that belong to an
    /// 			account.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - filters: The filters to apply to the search.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchDataSets(
        awsAccountId: String,
        filters: [DataSetSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchDataSetsResponse {
        let input = SearchDataSetsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchDataSets(input, logger: logger)
    }

    /// Use the SearchDataSources operation to search for data sources that
    /// 			belong to an account.
    @Sendable
    @inlinable
    public func searchDataSources(_ input: SearchDataSourcesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchDataSourcesResponse {
        try await self.client.execute(
            operation: "SearchDataSources", 
            path: "/accounts/{AwsAccountId}/search/data-sources", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the SearchDataSources operation to search for data sources that
    /// 			belong to an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - filters: The filters to apply to the search.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchDataSources(
        awsAccountId: String,
        filters: [DataSourceSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchDataSourcesResponse {
        let input = SearchDataSourcesRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchDataSources(input, logger: logger)
    }

    /// Search for the flows in an Amazon Web Services account.
    @Sendable
    @inlinable
    public func searchFlows(_ input: SearchFlowsInput, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchFlowsOutput {
        try await self.client.execute(
            operation: "SearchFlows", 
            path: "/accounts/{AwsAccountId}/flows/searchFlows", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Search for the flows in an Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account where you are searching for flows from.
    ///   - filters: The filters applied to the search when searching for flows in the Amazon Web Services account.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token to request the next set of results, or null if you want to retrieve the first set.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchFlows(
        awsAccountId: String,
        filters: [SearchFlowsFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchFlowsOutput {
        let input = SearchFlowsInput(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchFlows(input, logger: logger)
    }

    /// Searches the subfolders in a folder.
    @Sendable
    @inlinable
    public func searchFolders(_ input: SearchFoldersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchFoldersResponse {
        try await self.client.execute(
            operation: "SearchFolders", 
            path: "/accounts/{AwsAccountId}/search/folders", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches the subfolders in a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - filters: The filters to apply to the search. Currently, you can search only by the parent folder ARN. For example, "Filters": [ { "Name": "PARENT_FOLDER_ARN", "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:folder/folderId" } ].
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchFolders(
        awsAccountId: String,
        filters: [FolderSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchFoldersResponse {
        let input = SearchFoldersRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchFolders(input, logger: logger)
    }

    /// Use the SearchGroups operation to search groups in a specified Quick Sight namespace using the supplied filters.
    @Sendable
    @inlinable
    public func searchGroups(_ input: SearchGroupsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchGroupsResponse {
        try await self.client.execute(
            operation: "SearchGroups", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups-search", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Use the SearchGroups operation to search groups in a specified Quick Sight namespace using the supplied filters.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - filters: The structure for the search filters that you want to apply to your search.
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace that you want to search.
    ///   - nextToken: A pagination token that can be used in a subsequent request.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchGroups(
        awsAccountId: String,
        filters: [GroupSearchFilter],
        maxResults: Int? = nil,
        namespace: String,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchGroupsResponse {
        let input = SearchGroupsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            namespace: namespace, 
            nextToken: nextToken
        )
        return try await self.searchGroups(input, logger: logger)
    }

    /// Searches for any Q topic that exists in an QuickSight account.
    @Sendable
    @inlinable
    public func searchTopics(_ input: SearchTopicsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchTopicsResponse {
        try await self.client.execute(
            operation: "SearchTopics", 
            path: "/accounts/{AwsAccountId}/search/topics", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches for any Q topic that exists in an QuickSight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want to find.
    ///   - filters: The filters that you want to use to search for the topic.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - nextToken: The token for the next set of results, or null if there are no more results.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchTopics(
        awsAccountId: String,
        filters: [TopicSearchFilter],
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchTopicsResponse {
        let input = SearchTopicsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.searchTopics(input, logger: logger)
    }

    /// Starts an Asset Bundle export job. An Asset Bundle export job exports specified Amazon Quick Sight assets. You can also choose to export any asset dependencies in the same job. Export jobs run asynchronously and can be polled with a DescribeAssetBundleExportJob API call. When a job is successfully completed, a download URL that contains the exported assets is returned. The URL is valid for 5 minutes and can be refreshed with a DescribeAssetBundleExportJob API call. Each Amazon Quick Sight account can run up to 5 export jobs concurrently. The API caller must have the necessary permissions in their IAM role to access each resource before the resources can be exported.
    @Sendable
    @inlinable
    public func startAssetBundleExportJob(_ input: StartAssetBundleExportJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartAssetBundleExportJobResponse {
        try await self.client.execute(
            operation: "StartAssetBundleExportJob", 
            path: "/accounts/{AwsAccountId}/asset-bundle-export-jobs/export", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts an Asset Bundle export job. An Asset Bundle export job exports specified Amazon Quick Sight assets. You can also choose to export any asset dependencies in the same job. Export jobs run asynchronously and can be polled with a DescribeAssetBundleExportJob API call. When a job is successfully completed, a download URL that contains the exported assets is returned. The URL is valid for 5 minutes and can be refreshed with a DescribeAssetBundleExportJob API call. Each Amazon Quick Sight account can run up to 5 export jobs concurrently. The API caller must have the necessary permissions in their IAM role to access each resource before the resources can be exported.
    ///
    /// Parameters:
    ///   - assetBundleExportJobId: The ID of the job. This ID is unique while the job is running. After the job is completed, you can reuse this ID for another job.
    ///   - awsAccountId: The ID of the Amazon Web Services account to export assets from.
    ///   - cloudFormationOverridePropertyConfiguration: An optional collection of structures that generate CloudFormation parameters to override the existing resource property values when the resource is exported to a new CloudFormation template. Use this field if the ExportFormat field of a StartAssetBundleExportJobRequest API call is set to CLOUDFORMATION_JSON.
    ///   - exportFormat: The export data format.
    ///   - includeAllDependencies: A Boolean that determines whether all dependencies of each resource ARN are recursively exported with the job. For example, say you provided a Dashboard ARN to the ResourceArns parameter. If you set IncludeAllDependencies to TRUE, any theme, dataset, and data source resource that is a dependency of the dashboard is also exported.
    ///   - includeFolderMembers: A setting that indicates whether you want to include folder assets. You can also use this setting to recusrsively include all subfolders of an exported folder.
    ///   - includeFolderMemberships: A Boolean that determines if the exported asset carries over information about the folders that the asset is a member of.
    ///   - includePermissions: A Boolean that determines whether all permissions for each resource ARN are exported with the job. If you set IncludePermissions to TRUE, any permissions associated with each resource are exported.
    ///   - includeTags:  A Boolean that determines whether all tags for each resource ARN are exported with the job. If you set IncludeTags to TRUE, any tags associated with each resource are exported.
    ///   - resourceArns: An array of resource ARNs to export. The following resources are supported.    Analysis     Dashboard     DataSet     DataSource     RefreshSchedule     Theme     VPCConnection    The API caller must have the necessary permissions in their IAM role to access each resource before the resources can be exported.
    ///   - validationStrategy: An optional parameter that determines which validation strategy to use for the export job. If StrictModeForAllResources is set to TRUE, strict validation for every error is enforced. If it is set to FALSE, validation is skipped for specific UI errors that are shown as warnings. The default value for StrictModeForAllResources is FALSE.
    ///   - logger: Logger use during operation
    @inlinable
    public func startAssetBundleExportJob(
        assetBundleExportJobId: String,
        awsAccountId: String,
        cloudFormationOverridePropertyConfiguration: AssetBundleCloudFormationOverridePropertyConfiguration? = nil,
        exportFormat: AssetBundleExportFormat,
        includeAllDependencies: Bool? = nil,
        includeFolderMembers: IncludeFolderMembers? = nil,
        includeFolderMemberships: Bool? = nil,
        includePermissions: Bool? = nil,
        includeTags: Bool? = nil,
        resourceArns: [String],
        validationStrategy: AssetBundleExportJobValidationStrategy? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartAssetBundleExportJobResponse {
        let input = StartAssetBundleExportJobRequest(
            assetBundleExportJobId: assetBundleExportJobId, 
            awsAccountId: awsAccountId, 
            cloudFormationOverridePropertyConfiguration: cloudFormationOverridePropertyConfiguration, 
            exportFormat: exportFormat, 
            includeAllDependencies: includeAllDependencies, 
            includeFolderMembers: includeFolderMembers, 
            includeFolderMemberships: includeFolderMemberships, 
            includePermissions: includePermissions, 
            includeTags: includeTags, 
            resourceArns: resourceArns, 
            validationStrategy: validationStrategy
        )
        return try await self.startAssetBundleExportJob(input, logger: logger)
    }

    /// Starts an Asset Bundle import job. An Asset Bundle import job imports specified Amazon Quick Sight assets into an Amazon Quick Sight account. You can also choose to import a naming prefix and specified configuration overrides. The assets that are contained in the bundle file that you provide are used to create or update a new or existing asset in your Amazon Quick Sight account. Each Amazon Quick Sight account can run up to 5 import jobs concurrently. The API caller must have the necessary "create", "describe", and "update" permissions in their IAM role to access each resource type that is contained in the bundle file before the resources can be imported.
    @Sendable
    @inlinable
    public func startAssetBundleImportJob(_ input: StartAssetBundleImportJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartAssetBundleImportJobResponse {
        try await self.client.execute(
            operation: "StartAssetBundleImportJob", 
            path: "/accounts/{AwsAccountId}/asset-bundle-import-jobs/import", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts an Asset Bundle import job. An Asset Bundle import job imports specified Amazon Quick Sight assets into an Amazon Quick Sight account. You can also choose to import a naming prefix and specified configuration overrides. The assets that are contained in the bundle file that you provide are used to create or update a new or existing asset in your Amazon Quick Sight account. Each Amazon Quick Sight account can run up to 5 import jobs concurrently. The API caller must have the necessary "create", "describe", and "update" permissions in their IAM role to access each resource type that is contained in the bundle file before the resources can be imported.
    ///
    /// Parameters:
    ///   - assetBundleImportJobId: The ID of the job. This ID is unique while the job is running. After the job is completed, you can reuse this ID for another job.
    ///   - assetBundleImportSource: The source of the asset bundle zip file that contains the data that you want to import. The file must be in QUICKSIGHT_JSON format.
    ///   - awsAccountId: The ID of the Amazon Web Services account to import assets into.
    ///   - failureAction: The failure action for the import job. If you choose ROLLBACK, failed import jobs will attempt to undo any asset changes caused by the failed job. If you choose DO_NOTHING, failed import jobs will not attempt to roll back any asset changes caused by the failed job, possibly keeping the Amazon Quick Sight account in an inconsistent state.
    ///   - overrideParameters: Optional overrides that are applied to the resource configuration before import.
    ///   - overridePermissions: Optional permission overrides that are applied to the resource configuration before import.
    ///   - overrideTags: Optional tag overrides that are applied to the resource configuration before import.
    ///   - overrideValidationStrategy: An optional validation strategy override for all analyses and dashboards that is applied to the resource configuration before import.
    ///   - logger: Logger use during operation
    @inlinable
    public func startAssetBundleImportJob(
        assetBundleImportJobId: String,
        assetBundleImportSource: AssetBundleImportSource,
        awsAccountId: String,
        failureAction: AssetBundleImportFailureAction? = nil,
        overrideParameters: AssetBundleImportJobOverrideParameters? = nil,
        overridePermissions: AssetBundleImportJobOverridePermissions? = nil,
        overrideTags: AssetBundleImportJobOverrideTags? = nil,
        overrideValidationStrategy: AssetBundleImportJobOverrideValidationStrategy? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartAssetBundleImportJobResponse {
        let input = StartAssetBundleImportJobRequest(
            assetBundleImportJobId: assetBundleImportJobId, 
            assetBundleImportSource: assetBundleImportSource, 
            awsAccountId: awsAccountId, 
            failureAction: failureAction, 
            overrideParameters: overrideParameters, 
            overridePermissions: overridePermissions, 
            overrideTags: overrideTags, 
            overrideValidationStrategy: overrideValidationStrategy
        )
        return try await self.startAssetBundleImportJob(input, logger: logger)
    }

    /// Starts an asynchronous job that generates a snapshot of a dashboard's output. You can request one or several of the following format configurations in each API call.   1 Paginated PDF   1 Excel workbook that includes up to 5 table or pivot table visuals   5 CSVs from table or pivot table visuals   The status of a submitted job can be polled with the DescribeDashboardSnapshotJob API. When you call the  DescribeDashboardSnapshotJob API, check the JobStatus field in the response. Once the job reaches a COMPLETED or FAILED status, use the DescribeDashboardSnapshotJobResult API to obtain the URLs for the generated files. If the job fails, the DescribeDashboardSnapshotJobResult API returns detailed information about the error that occurred.  StartDashboardSnapshotJob API throttling  Quick Sight utilizes API throttling to create a more consistent user experience within a time span for customers when they call the StartDashboardSnapshotJob. By default, 12 jobs can run simlutaneously in one Amazon Web Services account and users can submit up 10 API requests per second before an account is throttled. If an overwhelming number of API requests are made by the same user in a short period of time, Quick Sight throttles the API calls to maintin an optimal experience and reliability for all Quick Sight users.  Common throttling scenarios  The following list provides information about the most commin throttling scenarios that can occur.    A large number of SnapshotExport API jobs are running simultaneously on an Amazon Web Services account. When a new StartDashboardSnapshotJob is created and there are already 12 jobs with the RUNNING status, the new job request fails and returns a LimitExceededException error. Wait for a current job to comlpete before you resubmit the new job.    A large number of API requests are submitted on an Amazon Web Services account. When a user makes more than 10 API calls to the Quick Sight API in one second, a ThrottlingException is returned.   If your use case requires a higher throttling limit, contact your account admin or Amazon Web ServicesSupport to explore options to tailor a more optimal expereince for your account.  Best practices to handle throttling  If your use case projects high levels of API traffic, try to reduce the degree of frequency and parallelism of API calls as much as you can to avoid throttling. You can also perform a timing test to calculate an estimate for the total processing time of your projected load that stays within the throttling limits of the Quick Sight APIs. For example, if your projected traffic is 100 snapshot jobs before 12:00 PM per day, start 12 jobs in parallel and measure the amount of time it takes to proccess all 12 jobs. Once you obtain the result, multiply the duration by 9, for example (12 minutes * 9 = 108 minutes). Use the new result to determine the latest time at which the jobs need to be started to meet your target deadline. The time that it takes to process a job can be impacted by the following factors:   The dataset type (Direct Query or SPICE).   The size of the dataset.   The complexity of the calculated fields that are used in the dashboard.   The number of visuals that are on a sheet.   The types of visuals that are on the sheet.   The number of formats and snapshots that are requested in the job configuration.   The size of the generated snapshots.
    @Sendable
    @inlinable
    public func startDashboardSnapshotJob(_ input: StartDashboardSnapshotJobRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartDashboardSnapshotJobResponse {
        try await self.client.execute(
            operation: "StartDashboardSnapshotJob", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts an asynchronous job that generates a snapshot of a dashboard's output. You can request one or several of the following format configurations in each API call.   1 Paginated PDF   1 Excel workbook that includes up to 5 table or pivot table visuals   5 CSVs from table or pivot table visuals   The status of a submitted job can be polled with the DescribeDashboardSnapshotJob API. When you call the  DescribeDashboardSnapshotJob API, check the JobStatus field in the response. Once the job reaches a COMPLETED or FAILED status, use the DescribeDashboardSnapshotJobResult API to obtain the URLs for the generated files. If the job fails, the DescribeDashboardSnapshotJobResult API returns detailed information about the error that occurred.  StartDashboardSnapshotJob API throttling  Quick Sight utilizes API throttling to create a more consistent user experience within a time span for customers when they call the StartDashboardSnapshotJob. By default, 12 jobs can run simlutaneously in one Amazon Web Services account and users can submit up 10 API requests per second before an account is throttled. If an overwhelming number of API requests are made by the same user in a short period of time, Quick Sight throttles the API calls to maintin an optimal experience and reliability for all Quick Sight users.  Common throttling scenarios  The following list provides information about the most commin throttling scenarios that can occur.    A large number of SnapshotExport API jobs are running simultaneously on an Amazon Web Services account. When a new StartDashboardSnapshotJob is created and there are already 12 jobs with the RUNNING status, the new job request fails and returns a LimitExceededException error. Wait for a current job to comlpete before you resubmit the new job.    A large number of API requests are submitted on an Amazon Web Services account. When a user makes more than 10 API calls to the Quick Sight API in one second, a ThrottlingException is returned.   If your use case requires a higher throttling limit, contact your account admin or Amazon Web ServicesSupport to explore options to tailor a more optimal expereince for your account.  Best practices to handle throttling  If your use case projects high levels of API traffic, try to reduce the degree of frequency and parallelism of API calls as much as you can to avoid throttling. You can also perform a timing test to calculate an estimate for the total processing time of your projected load that stays within the throttling limits of the Quick Sight APIs. For example, if your projected traffic is 100 snapshot jobs before 12:00 PM per day, start 12 jobs in parallel and measure the amount of time it takes to proccess all 12 jobs. Once you obtain the result, multiply the duration by 9, for example (12 minutes * 9 = 108 minutes). Use the new result to determine the latest time at which the jobs need to be started to meet your target deadline. The time that it takes to process a job can be impacted by the following factors:   The dataset type (Direct Query or SPICE).   The size of the dataset.   The complexity of the calculated fields that are used in the dashboard.   The number of visuals that are on a sheet.   The types of visuals that are on the sheet.   The number of formats and snapshots that are requested in the job configuration.   The size of the generated snapshots.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the dashboard snapshot job is executed in.
    ///   - dashboardId: The ID of the dashboard that you want to start a snapshot job for.
    ///   - snapshotConfiguration: A structure that describes the configuration of the dashboard snapshot.
    ///   - snapshotJobId: An ID for the dashboard snapshot job. This ID is unique to the dashboard while the job is running. This ID can be used to poll the status of a job with a DescribeDashboardSnapshotJob while the job runs. You can reuse this ID for another job 24 hours after the current job is completed.
    ///   - userConfiguration:  A structure that contains information about the anonymous users that the generated snapshot is for. This API will not return information about registered Amazon Quick Sight.
    ///   - logger: Logger use during operation
    @inlinable
    public func startDashboardSnapshotJob(
        awsAccountId: String,
        dashboardId: String,
        snapshotConfiguration: SnapshotConfiguration,
        snapshotJobId: String,
        userConfiguration: SnapshotUserConfiguration,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartDashboardSnapshotJobResponse {
        let input = StartDashboardSnapshotJobRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            snapshotConfiguration: snapshotConfiguration, 
            snapshotJobId: snapshotJobId, 
            userConfiguration: userConfiguration
        )
        return try await self.startDashboardSnapshotJob(input, logger: logger)
    }

    /// Starts an asynchronous job that runs an existing dashboard schedule and sends the dashboard snapshot through email.  Only one job can run simultaneously in a given schedule. Repeated requests are skipped with a 202 HTTP status code. For more information, see Scheduling and sending Amazon Quick Sight reports by email and Configuring email report settings for a Amazon Quick Sight dashboard in the Amazon Quick Sight User Guide.
    @Sendable
    @inlinable
    public func startDashboardSnapshotJobSchedule(_ input: StartDashboardSnapshotJobScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartDashboardSnapshotJobScheduleResponse {
        try await self.client.execute(
            operation: "StartDashboardSnapshotJobSchedule", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/schedules/{ScheduleId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts an asynchronous job that runs an existing dashboard schedule and sends the dashboard snapshot through email.  Only one job can run simultaneously in a given schedule. Repeated requests are skipped with a 202 HTTP status code. For more information, see Scheduling and sending Amazon Quick Sight reports by email and Configuring email report settings for a Amazon Quick Sight dashboard in the Amazon Quick Sight User Guide.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the dashboard snapshot job is executed in.
    ///   - dashboardId: The ID of the dashboard that you want to start a snapshot job schedule for.
    ///   - scheduleId: The ID of the schedule that you want to start a snapshot job schedule for. The schedule ID can be found in the Amazon Quick Sight console in the Schedules pane of the dashboard that the schedule is configured for.
    ///   - logger: Logger use during operation
    @inlinable
    public func startDashboardSnapshotJobSchedule(
        awsAccountId: String,
        dashboardId: String,
        scheduleId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartDashboardSnapshotJobScheduleResponse {
        let input = StartDashboardSnapshotJobScheduleRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            scheduleId: scheduleId
        )
        return try await self.startDashboardSnapshotJobSchedule(input, logger: logger)
    }

    /// Assigns one or more tags (key-value pairs) to the specified Amazon Quick Sight
    /// 			resource.  Tags can help you organize and categorize your resources. You can also use them to
    /// 			scope user permissions, by granting a user permission to access or change only resources
    /// 			with certain tag values. You can use the TagResource operation with a
    /// 			resource that already has tags. If you specify a new tag key for the resource, this tag
    /// 			is appended to the list of tags associated with the resource. If you specify a tag key
    /// 			that is already associated with the resource, the new tag value that you specify
    /// 			replaces the previous value for that tag. You can associate as many as 50 tags with a resource. Amazon Quick Sight supports
    /// 			tagging on data set, data source, dashboard, template, topic, and user.  Tagging for Amazon Quick Sight works in a similar way to tagging for other Amazon Web Services services, except for the following:   Tags are used to track costs for users in Amazon Quick Sight. You can't
    /// 					tag other resources that Amazon Quick Sight costs are based on, such as storage
    /// 					capacoty (SPICE), session usage, alert consumption, or reporting units.   Amazon Quick Sight doesn't currently support the tag editor for Resource Groups.
    @Sendable
    @inlinable
    public func tagResource(_ input: TagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> TagResourceResponse {
        try await self.client.execute(
            operation: "TagResource", 
            path: "/resources/{ResourceArn}/tags", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Assigns one or more tags (key-value pairs) to the specified Amazon Quick Sight
    /// 			resource.  Tags can help you organize and categorize your resources. You can also use them to
    /// 			scope user permissions, by granting a user permission to access or change only resources
    /// 			with certain tag values. You can use the TagResource operation with a
    /// 			resource that already has tags. If you specify a new tag key for the resource, this tag
    /// 			is appended to the list of tags associated with the resource. If you specify a tag key
    /// 			that is already associated with the resource, the new tag value that you specify
    /// 			replaces the previous value for that tag. You can associate as many as 50 tags with a resource. Amazon Quick Sight supports
    /// 			tagging on data set, data source, dashboard, template, topic, and user.  Tagging for Amazon Quick Sight works in a similar way to tagging for other Amazon Web Services services, except for the following:   Tags are used to track costs for users in Amazon Quick Sight. You can't
    /// 					tag other resources that Amazon Quick Sight costs are based on, such as storage
    /// 					capacoty (SPICE), session usage, alert consumption, or reporting units.   Amazon Quick Sight doesn't currently support the tag editor for Resource Groups.
    ///
    /// Parameters:
    ///   - resourceArn: The Amazon Resource Name (ARN) of the resource that you want to tag.
    ///   - tags: Contains a map of the key-value pairs for the resource tag or tags assigned to the
    ///   - logger: Logger use during operation
    @inlinable
    public func tagResource(
        resourceArn: String,
        tags: [Tag],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> TagResourceResponse {
        let input = TagResourceRequest(
            resourceArn: resourceArn, 
            tags: tags
        )
        return try await self.tagResource(input, logger: logger)
    }

    /// Removes a tag or tags from a resource.
    @Sendable
    @inlinable
    public func untagResource(_ input: UntagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UntagResourceResponse {
        try await self.client.execute(
            operation: "UntagResource", 
            path: "/resources/{ResourceArn}/tags", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes a tag or tags from a resource.
    ///
    /// Parameters:
    ///   - resourceArn: The Amazon Resource Name (ARN) of the resource that you want to untag.
    ///   - tagKeys: The keys of the key-value pairs for the resource tag or tags assigned to the
    ///   - logger: Logger use during operation
    @inlinable
    public func untagResource(
        resourceArn: String,
        tagKeys: [String],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UntagResourceResponse {
        let input = UntagResourceRequest(
            resourceArn: resourceArn, 
            tagKeys: tagKeys
        )
        return try await self.untagResource(input, logger: logger)
    }

    /// Applies a custom permissions profile to an account.
    @Sendable
    @inlinable
    public func updateAccountCustomPermission(_ input: UpdateAccountCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateAccountCustomPermissionResponse {
        try await self.client.execute(
            operation: "UpdateAccountCustomPermission", 
            path: "/accounts/{AwsAccountId}/custom-permission", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Applies a custom permissions profile to an account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account for which you want to apply a custom permissions profile.
    ///   - customPermissionsName: The name of the custom permissions profile that you want to apply to an account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateAccountCustomPermission(
        awsAccountId: String,
        customPermissionsName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateAccountCustomPermissionResponse {
        let input = UpdateAccountCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            customPermissionsName: customPermissionsName
        )
        return try await self.updateAccountCustomPermission(input, logger: logger)
    }

    /// Updates Amazon Quick Sight customizations. Currently, the only customization that you can use is a theme. You can use customizations for your Amazon Web Services account or, if you specify a namespace, for a Quick Sight namespace instead. Customizations that apply to a namespace override customizations that apply to an Amazon Web Services account. To find out which customizations apply, use the DescribeAccountCustomization API operation.
    @Sendable
    @inlinable
    public func updateAccountCustomization(_ input: UpdateAccountCustomizationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateAccountCustomizationResponse {
        try await self.client.execute(
            operation: "UpdateAccountCustomization", 
            path: "/accounts/{AwsAccountId}/customizations", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates Amazon Quick Sight customizations. Currently, the only customization that you can use is a theme. You can use customizations for your Amazon Web Services account or, if you specify a namespace, for a Quick Sight namespace instead. Customizations that apply to a namespace override customizations that apply to an Amazon Web Services account. To find out which customizations apply, use the DescribeAccountCustomization API operation.
    ///
    /// Parameters:
    ///   - accountCustomization: The Quick Sight customizations you're updating.
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to update Quick Sight customizations for.
    ///   - namespace: The namespace that you want to update Quick Sight customizations for.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateAccountCustomization(
        accountCustomization: AccountCustomization,
        awsAccountId: String,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateAccountCustomizationResponse {
        let input = UpdateAccountCustomizationRequest(
            accountCustomization: accountCustomization, 
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.updateAccountCustomization(input, logger: logger)
    }

    /// Updates the Amazon Quick Sight settings in your Amazon Web Services account.
    @Sendable
    @inlinable
    public func updateAccountSettings(_ input: UpdateAccountSettingsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateAccountSettingsResponse {
        try await self.client.execute(
            operation: "UpdateAccountSettings", 
            path: "/accounts/{AwsAccountId}/settings", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the Amazon Quick Sight settings in your Amazon Web Services account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the Quick Sight settings that you want to list.
    ///   - defaultNamespace: The default namespace for this Amazon Web Services account. Currently, the default is default. IAM users that register for the first time with Amazon Quick Sight provide an email address that becomes associated with the default namespace.
    ///   - notificationEmail: The email address that you want Quick Sight to send notifications to regarding your Amazon Web Services account or Quick Sight subscription.
    ///   - terminationProtectionEnabled: A boolean value that determines whether or not an Quick Sight account can be deleted. A True value doesn't allow the account to be deleted and results in an error message if a user tries to make a DeleteAccountSubscription request. A False value will allow the account to be deleted.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateAccountSettings(
        awsAccountId: String,
        defaultNamespace: String,
        notificationEmail: String? = nil,
        terminationProtectionEnabled: Bool? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateAccountSettingsResponse {
        let input = UpdateAccountSettingsRequest(
            awsAccountId: awsAccountId, 
            defaultNamespace: defaultNamespace, 
            notificationEmail: notificationEmail, 
            terminationProtectionEnabled: terminationProtectionEnabled
        )
        return try await self.updateAccountSettings(input, logger: logger)
    }

    /// Updates an existing action connector with new configuration details, authentication settings, or enabled actions.
    /// 	          You can modify the connector's name, description, authentication configuration, and which actions are enabled. For more information,
    /// 	          https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-action-auth.html.
    @Sendable
    @inlinable
    public func updateActionConnector(_ input: UpdateActionConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateActionConnectorResponse {
        try await self.client.execute(
            operation: "UpdateActionConnector", 
            path: "/accounts/{AwsAccountId}/action-connectors/{ActionConnectorId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an existing action connector with new configuration details, authentication settings, or enabled actions.
    /// 	          You can modify the connector's name, description, authentication configuration, and which actions are enabled. For more information,
    /// 	          https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-action-auth.html.
    ///
    /// Parameters:
    ///   - actionConnectorId: The unique identifier of the action connector to update.
    ///   - authenticationConfig: The updated authentication configuration for connecting to the external service.
    ///   - awsAccountId: The Amazon Web Services account ID that contains the action connector to update.
    ///   - description: The updated description of the action connector.
    ///   - name: The new name for the action connector.
    ///   - vpcConnectionArn: The updated ARN of the VPC connection to use for secure connectivity.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateActionConnector(
        actionConnectorId: String,
        authenticationConfig: AuthConfig,
        awsAccountId: String,
        description: String? = nil,
        name: String,
        vpcConnectionArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateActionConnectorResponse {
        let input = UpdateActionConnectorRequest(
            actionConnectorId: actionConnectorId, 
            authenticationConfig: authenticationConfig, 
            awsAccountId: awsAccountId, 
            description: description, 
            name: name, 
            vpcConnectionArn: vpcConnectionArn
        )
        return try await self.updateActionConnector(input, logger: logger)
    }

    /// Updates the permissions for an action connector by granting or revoking access for specific users and groups. You can control who can view, use, or manage the action connector.
    @Sendable
    @inlinable
    public func updateActionConnectorPermissions(_ input: UpdateActionConnectorPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateActionConnectorPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateActionConnectorPermissions", 
            path: "/accounts/{AwsAccountId}/action-connectors/{ActionConnectorId}/permissions", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the permissions for an action connector by granting or revoking access for specific users and groups. You can control who can view, use, or manage the action connector.
    ///
    /// Parameters:
    ///   - actionConnectorId: The unique identifier of the action connector whose permissions you want to update.
    ///   - awsAccountId: The Amazon Web Services account ID that contains the action connector.
    ///   - grantPermissions: The permissions to grant to users and groups for this action connector.
    ///   - revokePermissions: The permissions to revoke from users and groups for this action connector.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateActionConnectorPermissions(
        actionConnectorId: String,
        awsAccountId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateActionConnectorPermissionsResponse {
        let input = UpdateActionConnectorPermissionsRequest(
            actionConnectorId: actionConnectorId, 
            awsAccountId: awsAccountId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateActionConnectorPermissions(input, logger: logger)
    }

    /// Updates an analysis in Amazon Quick Sight
    @Sendable
    @inlinable
    public func updateAnalysis(_ input: UpdateAnalysisRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateAnalysisResponse {
        try await self.client.execute(
            operation: "UpdateAnalysis", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an analysis in Amazon Quick Sight
    ///
    /// Parameters:
    ///   - analysisId: The ID for the analysis that you're updating. This ID displays in the URL of the analysis.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis that you're updating.
    ///   - definition: The definition of an analysis. A definition is the data model of all features in a Dashboard, Template, or Analysis.
    ///   - name: A descriptive name for the analysis that you're updating. This name displays for the analysis in the Amazon Quick Sight console.
    ///   - parameters: The parameter names and override values that you want to use. An analysis can have  any parameter type, and some parameters might accept multiple values.
    ///   - sourceEntity: A source entity to use for the analysis that you're updating. This metadata structure contains details that describe a source template and one or more datasets.
    ///   - themeArn: The Amazon Resource Name (ARN) for the theme to apply to the analysis that you're creating. To see the theme in the Amazon Quick Sight console, make sure that you have access to it.
    ///   - validationStrategy: The option to relax the validation needed to update an analysis with definition objects. This skips the validation step for specific errors.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateAnalysis(
        analysisId: String,
        awsAccountId: String,
        definition: AnalysisDefinition? = nil,
        name: String,
        parameters: Parameters? = nil,
        sourceEntity: AnalysisSourceEntity? = nil,
        themeArn: String? = nil,
        validationStrategy: ValidationStrategy? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateAnalysisResponse {
        let input = UpdateAnalysisRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId, 
            definition: definition, 
            name: name, 
            parameters: parameters, 
            sourceEntity: sourceEntity, 
            themeArn: themeArn, 
            validationStrategy: validationStrategy
        )
        return try await self.updateAnalysis(input, logger: logger)
    }

    /// Updates the read and write permissions for an analysis.
    @Sendable
    @inlinable
    public func updateAnalysisPermissions(_ input: UpdateAnalysisPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateAnalysisPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateAnalysisPermissions", 
            path: "/accounts/{AwsAccountId}/analyses/{AnalysisId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the read and write permissions for an analysis.
    ///
    /// Parameters:
    ///   - analysisId: The ID of the analysis whose permissions you're updating. The ID is part of the analysis URL.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analysis whose permissions you're updating. You must be using the Amazon Web Services account that the analysis is in.
    ///   - grantPermissions: A structure that describes the permissions to add and the principal to add them to.
    ///   - revokePermissions: A structure that describes the permissions to remove and the principal to remove them from.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateAnalysisPermissions(
        analysisId: String,
        awsAccountId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateAnalysisPermissionsResponse {
        let input = UpdateAnalysisPermissionsRequest(
            analysisId: analysisId, 
            awsAccountId: awsAccountId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateAnalysisPermissions(input, logger: logger)
    }

    /// Updates an QuickSight application with a token exchange grant. This operation only supports QuickSight applications that are registered with IAM Identity Center.
    @Sendable
    @inlinable
    public func updateApplicationWithTokenExchangeGrant(_ input: UpdateApplicationWithTokenExchangeGrantRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateApplicationWithTokenExchangeGrantResponse {
        try await self.client.execute(
            operation: "UpdateApplicationWithTokenExchangeGrant", 
            path: "/accounts/{AwsAccountId}/application-with-token-exchange-grant", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an QuickSight application with a token exchange grant. This operation only supports QuickSight applications that are registered with IAM Identity Center.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account to be updated with a token exchange grant.
    ///   - namespace: The namespace of the QuickSight application.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateApplicationWithTokenExchangeGrant(
        awsAccountId: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateApplicationWithTokenExchangeGrantResponse {
        let input = UpdateApplicationWithTokenExchangeGrantRequest(
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.updateApplicationWithTokenExchangeGrant(input, logger: logger)
    }

    /// Updates a brand.
    @Sendable
    @inlinable
    public func updateBrand(_ input: UpdateBrandRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateBrandResponse {
        try await self.client.execute(
            operation: "UpdateBrand", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandDefinition: The definition of the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateBrand(
        awsAccountId: String,
        brandDefinition: BrandDefinition? = nil,
        brandId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateBrandResponse {
        let input = UpdateBrandRequest(
            awsAccountId: awsAccountId, 
            brandDefinition: brandDefinition, 
            brandId: brandId
        )
        return try await self.updateBrand(input, logger: logger)
    }

    /// Updates a brand assignment.
    @Sendable
    @inlinable
    public func updateBrandAssignment(_ input: UpdateBrandAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateBrandAssignmentResponse {
        try await self.client.execute(
            operation: "UpdateBrandAssignment", 
            path: "/accounts/{AwsAccountId}/brandassignments", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a brand assignment.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand assignment.
    ///   - brandArn: The Amazon Resource Name (ARN) of the brand.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateBrandAssignment(
        awsAccountId: String,
        brandArn: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateBrandAssignmentResponse {
        let input = UpdateBrandAssignmentRequest(
            awsAccountId: awsAccountId, 
            brandArn: brandArn
        )
        return try await self.updateBrandAssignment(input, logger: logger)
    }

    /// Updates the published version of a brand.
    @Sendable
    @inlinable
    public func updateBrandPublishedVersion(_ input: UpdateBrandPublishedVersionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateBrandPublishedVersionResponse {
        try await self.client.execute(
            operation: "UpdateBrandPublishedVersion", 
            path: "/accounts/{AwsAccountId}/brands/{BrandId}/publishedversion", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the published version of a brand.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brand.
    ///   - brandId: The ID of the QuickSight brand.
    ///   - versionId: The ID of the published version.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateBrandPublishedVersion(
        awsAccountId: String,
        brandId: String,
        versionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateBrandPublishedVersionResponse {
        let input = UpdateBrandPublishedVersionRequest(
            awsAccountId: awsAccountId, 
            brandId: brandId, 
            versionId: versionId
        )
        return try await self.updateBrandPublishedVersion(input, logger: logger)
    }

    /// Updates a custom permissions profile.
    @Sendable
    @inlinable
    public func updateCustomPermissions(_ input: UpdateCustomPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateCustomPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateCustomPermissions", 
            path: "/accounts/{AwsAccountId}/custom-permissions/{CustomPermissionsName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a custom permissions profile.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permissions profile that you want to update.
    ///   - capabilities: A set of actions to include in the custom permissions profile.
    ///   - customPermissionsName: The name of the custom permissions profile that you want to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateCustomPermissions(
        awsAccountId: String,
        capabilities: Capabilities? = nil,
        customPermissionsName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateCustomPermissionsResponse {
        let input = UpdateCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            capabilities: capabilities, 
            customPermissionsName: customPermissionsName
        )
        return try await self.updateCustomPermissions(input, logger: logger)
    }

    /// Updates a dashboard in an Amazon Web Services account.  Updating a Dashboard creates a new dashboard version but does not immediately publish the new version. You can update the published version of a dashboard by using the  UpdateDashboardPublishedVersion API operation.
    @Sendable
    @inlinable
    public func updateDashboard(_ input: UpdateDashboardRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDashboardResponse {
        try await self.client.execute(
            operation: "UpdateDashboard", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a dashboard in an Amazon Web Services account.  Updating a Dashboard creates a new dashboard version but does not immediately publish the new version. You can update the published version of a dashboard by using the  UpdateDashboardPublishedVersion API operation.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're updating.
    ///   - dashboardId: The ID for the dashboard.
    ///   - dashboardPublishOptions: Options for publishing the dashboard when you create it:    AvailabilityStatus for AdHocFilteringOption - This status can be either ENABLED or DISABLED. When this is set to DISABLED, Amazon Quick Sight disables the left filter pane on the published dashboard, which can be used for ad hoc (one-time) filtering. This option is ENABLED by default.     AvailabilityStatus for ExportToCSVOption - This status can be either ENABLED or DISABLED. The visual option to export data to .CSV format isn't enabled when this is set to DISABLED. This option is ENABLED by default.     VisibilityState for SheetControlsOption - This visibility state can be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.     AvailabilityStatus for QuickSuiteActionsOption - This status can be either ENABLED or DISABLED. Features related to Actions in Amazon Quick Suite on dashboards are disabled when this is set to DISABLED. This option is DISABLED by default.    AvailabilityStatus for ExecutiveSummaryOption - This status can be either ENABLED or DISABLED. The option to build an executive summary is disabled when this is set to DISABLED. This option is ENABLED by default.    AvailabilityStatus for DataStoriesSharingOption - This status can be either ENABLED or DISABLED. The option to share a data story is disabled when this is set to DISABLED. This option is ENABLED by default.
    ///   - definition: The definition of a dashboard. A definition is the data model of all features in a Dashboard, Template, or Analysis.
    ///   - name: The display name of the dashboard.
    ///   - parameters: A structure that contains the parameters of the dashboard. These are parameter overrides for a dashboard. A dashboard can have any type of parameters, and some parameters might accept multiple values.
    ///   - sourceEntity: The entity that you are using as a source when you update the dashboard. In SourceEntity, you specify the type of object you're using as source. You can only update a dashboard from a template, so you use a SourceTemplate entity. If you need to update a dashboard from an analysis, first convert the analysis to a template by using the  CreateTemplate API operation. For SourceTemplate, specify the Amazon Resource Name (ARN) of the source template. The SourceTemplate ARN can contain any Amazon Web Services account and any Amazon Quick Sight-supported Amazon Web Services Region.  Use the DataSetReferences entity within SourceTemplate to list the replacement datasets for the placeholders listed in the original. The schema in each dataset must match its placeholder.
    ///   - themeArn: The Amazon Resource Name (ARN) of the theme that is being used for this dashboard. If you add a value for this field, it overrides the value that was originally associated with the entity. The theme ARN must exist in the same Amazon Web Services account where you create the dashboard.
    ///   - validationStrategy: The option to relax the validation needed to update a dashboard with definition objects. This skips the validation step for specific errors.
    ///   - versionDescription: A description for the first version of the dashboard being created.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDashboard(
        awsAccountId: String,
        dashboardId: String,
        dashboardPublishOptions: DashboardPublishOptions? = nil,
        definition: DashboardVersionDefinition? = nil,
        name: String,
        parameters: Parameters? = nil,
        sourceEntity: DashboardSourceEntity? = nil,
        themeArn: String? = nil,
        validationStrategy: ValidationStrategy? = nil,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDashboardResponse {
        let input = UpdateDashboardRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            dashboardPublishOptions: dashboardPublishOptions, 
            definition: definition, 
            name: name, 
            parameters: parameters, 
            sourceEntity: sourceEntity, 
            themeArn: themeArn, 
            validationStrategy: validationStrategy, 
            versionDescription: versionDescription
        )
        return try await self.updateDashboard(input, logger: logger)
    }

    /// Updates the linked analyses on a dashboard.
    @Sendable
    @inlinable
    public func updateDashboardLinks(_ input: UpdateDashboardLinksRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDashboardLinksResponse {
        try await self.client.execute(
            operation: "UpdateDashboardLinks", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/linked-entities", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the linked analyses on a dashboard.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard whose links you want to update.
    ///   - dashboardId: The ID for the dashboard.
    ///   - linkEntities:  list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDashboardLinks(
        awsAccountId: String,
        dashboardId: String,
        linkEntities: [String],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDashboardLinksResponse {
        let input = UpdateDashboardLinksRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            linkEntities: linkEntities
        )
        return try await self.updateDashboardLinks(input, logger: logger)
    }

    /// Updates read and write permissions on a dashboard.
    @Sendable
    @inlinable
    public func updateDashboardPermissions(_ input: UpdateDashboardPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDashboardPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateDashboardPermissions", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates read and write permissions on a dashboard.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard whose permissions you're updating.
    ///   - dashboardId: The ID for the dashboard.
    ///   - grantLinkPermissions: Grants link permissions to all users in a defined namespace.
    ///   - grantPermissions: The permissions that you want to grant on this resource.
    ///   - revokeLinkPermissions: Revokes link permissions from all users in a defined namespace.
    ///   - revokePermissions: The permissions that you want to revoke from this resource.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDashboardPermissions(
        awsAccountId: String,
        dashboardId: String,
        grantLinkPermissions: [ResourcePermission]? = nil,
        grantPermissions: [ResourcePermission]? = nil,
        revokeLinkPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDashboardPermissionsResponse {
        let input = UpdateDashboardPermissionsRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            grantLinkPermissions: grantLinkPermissions, 
            grantPermissions: grantPermissions, 
            revokeLinkPermissions: revokeLinkPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateDashboardPermissions(input, logger: logger)
    }

    /// Updates the published version of a dashboard.
    @Sendable
    @inlinable
    public func updateDashboardPublishedVersion(_ input: UpdateDashboardPublishedVersionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDashboardPublishedVersionResponse {
        try await self.client.execute(
            operation: "UpdateDashboardPublishedVersion", 
            path: "/accounts/{AwsAccountId}/dashboards/{DashboardId}/versions/{VersionNumber}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the published version of a dashboard.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're updating.
    ///   - dashboardId: The ID for the dashboard.
    ///   - versionNumber: The version number of the dashboard.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDashboardPublishedVersion(
        awsAccountId: String,
        dashboardId: String,
        versionNumber: Int64,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDashboardPublishedVersionResponse {
        let input = UpdateDashboardPublishedVersionRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            versionNumber: versionNumber
        )
        return try await self.updateDashboardPublishedVersion(input, logger: logger)
    }

    /// Updates a Dashboard QA configuration.
    @Sendable
    @inlinable
    public func updateDashboardsQAConfiguration(_ input: UpdateDashboardsQAConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDashboardsQAConfigurationResponse {
        try await self.client.execute(
            operation: "UpdateDashboardsQAConfiguration", 
            path: "/accounts/{AwsAccountId}/dashboards-qa-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Dashboard QA configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard QA configuration that you want to update.
    ///   - dashboardsQAStatus: The status of dashboards QA configuration that you want to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDashboardsQAConfiguration(
        awsAccountId: String,
        dashboardsQAStatus: DashboardsQAStatus,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDashboardsQAConfigurationResponse {
        let input = UpdateDashboardsQAConfigurationRequest(
            awsAccountId: awsAccountId, 
            dashboardsQAStatus: dashboardsQAStatus
        )
        return try await self.updateDashboardsQAConfiguration(input, logger: logger)
    }

    /// Updates a dataset. This operation doesn't support datasets that include uploaded files
    /// 			as a source. Partial updates are not supported by this operation.
    @Sendable
    @inlinable
    public func updateDataSet(_ input: UpdateDataSetRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDataSetResponse {
        try await self.client.execute(
            operation: "UpdateDataSet", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a dataset. This operation doesn't support datasets that include uploaded files
    /// 			as a source. Partial updates are not supported by this operation.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - columnGroups: Groupings of columns that work together in certain Amazon Quick Sight features.
    ///   - columnLevelPermissionRules: A set of one or more definitions of a  ColumnLevelPermissionRule .
    ///   - dataSetId: The ID for the dataset that you want to update. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - datasetParameters: The parameter declarations of the dataset.
    ///   - dataSetUsageConfiguration: 
    ///   - fieldFolders: The folder that contains fields and nested subfolders for your dataset.
    ///   - importMode: Indicates whether you want to import the data into SPICE.
    ///   - logicalTableMap: Configures the combination and transformation of the data from the physical
    ///   - name: The display name for the dataset.
    ///   - performanceConfiguration: The configuration for the performance optimization of the dataset that contains a
    ///   - physicalTableMap: Declares the physical tables that are available in the underlying data sources.
    ///   - rowLevelPermissionDataSet: The row-level security configuration for the data you want to create.
    ///   - rowLevelPermissionTagConfiguration: The configuration of tags on a dataset to set row-level security. Row-level security
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDataSet(
        awsAccountId: String,
        columnGroups: [ColumnGroup]? = nil,
        columnLevelPermissionRules: [ColumnLevelPermissionRule]? = nil,
        dataSetId: String,
        datasetParameters: [DatasetParameter]? = nil,
        dataSetUsageConfiguration: DataSetUsageConfiguration? = nil,
        fieldFolders: [String: FieldFolder]? = nil,
        importMode: DataSetImportMode,
        logicalTableMap: [String: LogicalTable]? = nil,
        name: String,
        performanceConfiguration: PerformanceConfiguration? = nil,
        physicalTableMap: [String: PhysicalTable],
        rowLevelPermissionDataSet: RowLevelPermissionDataSet? = nil,
        rowLevelPermissionTagConfiguration: RowLevelPermissionTagConfiguration? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDataSetResponse {
        let input = UpdateDataSetRequest(
            awsAccountId: awsAccountId, 
            columnGroups: columnGroups, 
            columnLevelPermissionRules: columnLevelPermissionRules, 
            dataSetId: dataSetId, 
            datasetParameters: datasetParameters, 
            dataSetUsageConfiguration: dataSetUsageConfiguration, 
            fieldFolders: fieldFolders, 
            importMode: importMode, 
            logicalTableMap: logicalTableMap, 
            name: name, 
            performanceConfiguration: performanceConfiguration, 
            physicalTableMap: physicalTableMap, 
            rowLevelPermissionDataSet: rowLevelPermissionDataSet, 
            rowLevelPermissionTagConfiguration: rowLevelPermissionTagConfiguration
        )
        return try await self.updateDataSet(input, logger: logger)
    }

    /// Updates the permissions on a dataset. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
    @Sendable
    @inlinable
    public func updateDataSetPermissions(_ input: UpdateDataSetPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDataSetPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateDataSetPermissions", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/permissions", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the permissions on a dataset. The permissions resource is
    /// 				arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID for the dataset whose permissions you want to update. This ID is unique per
    ///   - grantPermissions: The resource permissions that you want to grant to the dataset.
    ///   - revokePermissions: The resource permissions that you want to revoke from the dataset.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDataSetPermissions(
        awsAccountId: String,
        dataSetId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDataSetPermissionsResponse {
        let input = UpdateDataSetPermissionsRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateDataSetPermissions(input, logger: logger)
    }

    /// Updates a data source.
    @Sendable
    @inlinable
    public func updateDataSource(_ input: UpdateDataSourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDataSourceResponse {
        try await self.client.execute(
            operation: "UpdateDataSource", 
            path: "/accounts/{AwsAccountId}/data-sources/{DataSourceId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - credentials: The credentials that Amazon Quick Sight that uses to connect to your underlying source.
    ///   - dataSourceId: The ID of the data source. This ID is unique per Amazon Web Services Region for each
    ///   - dataSourceParameters: The parameters that Amazon Quick Sight uses to connect to your underlying
    ///   - name: A display name for the data source.
    ///   - sslProperties: Secure Socket Layer (SSL) properties that apply when Amazon Quick Sight connects to
    ///   - vpcConnectionProperties: Use this parameter only when you want Amazon Quick Sight to use a VPC connection when
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDataSource(
        awsAccountId: String,
        credentials: DataSourceCredentials? = nil,
        dataSourceId: String,
        dataSourceParameters: DataSourceParameters? = nil,
        name: String,
        sslProperties: SslProperties? = nil,
        vpcConnectionProperties: VpcConnectionProperties? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDataSourceResponse {
        let input = UpdateDataSourceRequest(
            awsAccountId: awsAccountId, 
            credentials: credentials, 
            dataSourceId: dataSourceId, 
            dataSourceParameters: dataSourceParameters, 
            name: name, 
            sslProperties: sslProperties, 
            vpcConnectionProperties: vpcConnectionProperties
        )
        return try await self.updateDataSource(input, logger: logger)
    }

    /// Updates the permissions to a data source.
    @Sendable
    @inlinable
    public func updateDataSourcePermissions(_ input: UpdateDataSourcePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDataSourcePermissionsResponse {
        try await self.client.execute(
            operation: "UpdateDataSourcePermissions", 
            path: "/accounts/{AwsAccountId}/data-sources/{DataSourceId}/permissions", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the permissions to a data source.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSourceId: The ID of the data source. This ID is unique per Amazon Web Services Region for each
    ///   - grantPermissions: A list of resource permissions that you want to grant on the data source.
    ///   - revokePermissions: A list of resource permissions that you want to revoke on the data source.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDataSourcePermissions(
        awsAccountId: String,
        dataSourceId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDataSourcePermissionsResponse {
        let input = UpdateDataSourcePermissionsRequest(
            awsAccountId: awsAccountId, 
            dataSourceId: dataSourceId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateDataSourcePermissions(input, logger: logger)
    }

    /// Updates a Amazon Q Business application that is linked to a Quick Sight account.
    @Sendable
    @inlinable
    public func updateDefaultQBusinessApplication(_ input: UpdateDefaultQBusinessApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateDefaultQBusinessApplicationResponse {
        try await self.client.execute(
            operation: "UpdateDefaultQBusinessApplication", 
            path: "/accounts/{AwsAccountId}/default-qbusiness-application", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Amazon Q Business application that is linked to a Quick Sight account.
    ///
    /// Parameters:
    ///   - applicationId: The ID of the Amazon Q Business application that you want to update.
    ///   - awsAccountId: The ID of the Quick Sight account that is connected to the Amazon Q Business application that you want to update.
    ///   - namespace: The Quick Sight namespace that contains the linked Amazon Q Business application. If this field is left blank, the default namespace is used. Currently, the default namespace is the only valid value for this parameter.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateDefaultQBusinessApplication(
        applicationId: String,
        awsAccountId: String,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateDefaultQBusinessApplicationResponse {
        let input = UpdateDefaultQBusinessApplicationRequest(
            applicationId: applicationId, 
            awsAccountId: awsAccountId, 
            namespace: namespace
        )
        return try await self.updateDefaultQBusinessApplication(input, logger: logger)
    }

    /// Updates permissions against principals on a flow.
    @Sendable
    @inlinable
    public func updateFlowPermissions(_ input: UpdateFlowPermissionsInput, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateFlowPermissionsOutput {
        try await self.client.execute(
            operation: "UpdateFlowPermissions", 
            path: "/accounts/{AwsAccountId}/flows/{FlowId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates permissions against principals on a flow.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the flow you are updating permissions against.
    ///   - flowId: The unique identifier of the flow to update permissions for.
    ///   - grantPermissions: The permissions that you want to grant on this flow.
    ///   - revokePermissions: The permissions that you want to revoke from this flow.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateFlowPermissions(
        awsAccountId: String,
        flowId: String,
        grantPermissions: [Permission]? = nil,
        revokePermissions: [Permission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateFlowPermissionsOutput {
        let input = UpdateFlowPermissionsInput(
            awsAccountId: awsAccountId, 
            flowId: flowId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateFlowPermissions(input, logger: logger)
    }

    /// Updates the name of a folder.
    @Sendable
    @inlinable
    public func updateFolder(_ input: UpdateFolderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateFolderResponse {
        try await self.client.execute(
            operation: "UpdateFolder", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the name of a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder to update.
    ///   - folderId: The ID of the folder.
    ///   - name: The name of the folder.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateFolder(
        awsAccountId: String,
        folderId: String,
        name: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateFolderResponse {
        let input = UpdateFolderRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            name: name
        )
        return try await self.updateFolder(input, logger: logger)
    }

    /// Updates permissions of a folder.
    @Sendable
    @inlinable
    public func updateFolderPermissions(_ input: UpdateFolderPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateFolderPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateFolderPermissions", 
            path: "/accounts/{AwsAccountId}/folders/{FolderId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates permissions of a folder.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder to update.
    ///   - folderId: The ID of the folder.
    ///   - grantPermissions: The permissions that you want to grant on a resource. Namespace ARNs are not supported Principal values for folder permissions.
    ///   - revokePermissions: The permissions that you want to revoke from a resource.  Namespace ARNs are not supported Principal values for folder permissions.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateFolderPermissions(
        awsAccountId: String,
        folderId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateFolderPermissionsResponse {
        let input = UpdateFolderPermissionsRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions
        )
        return try await self.updateFolderPermissions(input, logger: logger)
    }

    /// Changes a group description.
    @Sendable
    @inlinable
    public func updateGroup(_ input: UpdateGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateGroupResponse {
        try await self.client.execute(
            operation: "UpdateGroup", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Changes a group description.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - description: The description for the group that you want to update.
    ///   - groupName: The name of the group that you want to update.
    ///   - namespace: The namespace of the group that you want to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateGroup(
        awsAccountId: String,
        description: String? = nil,
        groupName: String,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateGroupResponse {
        let input = UpdateGroupRequest(
            awsAccountId: awsAccountId, 
            description: description, 
            groupName: groupName, 
            namespace: namespace
        )
        return try await self.updateGroup(input, logger: logger)
    }

    /// Updates an existing IAM policy assignment. This operation updates only
    /// 			the optional parameter or parameters that are specified in the request. This overwrites
    /// 			all of the users included in Identities.
    @Sendable
    @inlinable
    public func updateIAMPolicyAssignment(_ input: UpdateIAMPolicyAssignmentRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateIAMPolicyAssignmentResponse {
        try await self.client.execute(
            operation: "UpdateIAMPolicyAssignment", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments/{AssignmentName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an existing IAM policy assignment. This operation updates only
    /// 			the optional parameter or parameters that are specified in the request. This overwrites
    /// 			all of the users included in Identities.
    ///
    /// Parameters:
    ///   - assignmentName: The name of the assignment, also called a rule.
    ///   - assignmentStatus: The status of the assignment. Possible values are as follows:    ENABLED - Anything specified in this assignment is used when
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the IAM policy
    ///   - identities: The Amazon Quick Sight users, groups, or both that you want to assign the policy
    ///   - namespace: The namespace of the assignment.
    ///   - policyArn: The ARN for the IAM policy to apply to the Amazon Quick Sight users and
    ///   - logger: Logger use during operation
    @inlinable
    public func updateIAMPolicyAssignment(
        assignmentName: String,
        assignmentStatus: AssignmentStatus? = nil,
        awsAccountId: String,
        identities: [String: [String]]? = nil,
        namespace: String,
        policyArn: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateIAMPolicyAssignmentResponse {
        let input = UpdateIAMPolicyAssignmentRequest(
            assignmentName: assignmentName, 
            assignmentStatus: assignmentStatus, 
            awsAccountId: awsAccountId, 
            identities: identities, 
            namespace: namespace, 
            policyArn: policyArn
        )
        return try await self.updateIAMPolicyAssignment(input, logger: logger)
    }

    /// Adds or updates services and authorized targets to configure what the Quick Sight IAM Identity Center application can access. This operation is only supported for Quick Sight accounts using IAM Identity Center
    @Sendable
    @inlinable
    public func updateIdentityPropagationConfig(_ input: UpdateIdentityPropagationConfigRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateIdentityPropagationConfigResponse {
        try await self.client.execute(
            operation: "UpdateIdentityPropagationConfig", 
            path: "/accounts/{AwsAccountId}/identity-propagation-config/{Service}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds or updates services and authorized targets to configure what the Quick Sight IAM Identity Center application can access. This operation is only supported for Quick Sight accounts using IAM Identity Center
    ///
    /// Parameters:
    ///   - authorizedTargets: Specifies a list of application ARNs that represent the authorized targets for a service.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the identity propagation configuration that you want to update.
    ///   - service: The name of the Amazon Web Services service that contains the authorized targets that you want to add or update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateIdentityPropagationConfig(
        authorizedTargets: [String]? = nil,
        awsAccountId: String,
        service: ServiceType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateIdentityPropagationConfigResponse {
        let input = UpdateIdentityPropagationConfigRequest(
            authorizedTargets: authorizedTargets, 
            awsAccountId: awsAccountId, 
            service: service
        )
        return try await self.updateIdentityPropagationConfig(input, logger: logger)
    }

    /// Updates the content and status of IP rules. Traffic from a source is allowed when the source satisfies either the IpRestrictionRule, VpcIdRestrictionRule, or VpcEndpointIdRestrictionRule. To use this operation, you must provide the entire map of rules. You can use the DescribeIpRestriction operation to get the current rule map.
    @Sendable
    @inlinable
    public func updateIpRestriction(_ input: UpdateIpRestrictionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateIpRestrictionResponse {
        try await self.client.execute(
            operation: "UpdateIpRestriction", 
            path: "/accounts/{AwsAccountId}/ip-restriction", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the content and status of IP rules. Traffic from a source is allowed when the source satisfies either the IpRestrictionRule, VpcIdRestrictionRule, or VpcEndpointIdRestrictionRule. To use this operation, you must provide the entire map of rules. You can use the DescribeIpRestriction operation to get the current rule map.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the IP rules.
    ///   - enabled: A value that specifies whether IP rules are turned on.
    ///   - ipRestrictionRuleMap: A map that describes the updated IP rules with CIDR ranges and descriptions.
    ///   - vpcEndpointIdRestrictionRuleMap: A map of allowed VPC endpoint IDs and their corresponding rule descriptions.
    ///   - vpcIdRestrictionRuleMap: A map of VPC IDs and their corresponding rules. When you configure this parameter, traffic from all VPC endpoints that are present in the specified VPC is allowed.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateIpRestriction(
        awsAccountId: String,
        enabled: Bool? = nil,
        ipRestrictionRuleMap: [String: String]? = nil,
        vpcEndpointIdRestrictionRuleMap: [String: String]? = nil,
        vpcIdRestrictionRuleMap: [String: String]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateIpRestrictionResponse {
        let input = UpdateIpRestrictionRequest(
            awsAccountId: awsAccountId, 
            enabled: enabled, 
            ipRestrictionRuleMap: ipRestrictionRuleMap, 
            vpcEndpointIdRestrictionRuleMap: vpcEndpointIdRestrictionRuleMap, 
            vpcIdRestrictionRuleMap: vpcIdRestrictionRuleMap
        )
        return try await self.updateIpRestriction(input, logger: logger)
    }

    /// Updates a customer managed key in a Quick Sight account.
    @Sendable
    @inlinable
    public func updateKeyRegistration(_ input: UpdateKeyRegistrationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateKeyRegistrationResponse {
        try await self.client.execute(
            operation: "UpdateKeyRegistration", 
            path: "/accounts/{AwsAccountId}/key-registration", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a customer managed key in a Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the customer managed key registration that you want to update.
    ///   - keyRegistration: A list of RegisteredCustomerManagedKey objects to be updated to the Quick Sight account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateKeyRegistration(
        awsAccountId: String,
        keyRegistration: [RegisteredCustomerManagedKey],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateKeyRegistrationResponse {
        let input = UpdateKeyRegistrationRequest(
            awsAccountId: awsAccountId, 
            keyRegistration: keyRegistration
        )
        return try await self.updateKeyRegistration(input, logger: logger)
    }

    ///  This API controls public sharing settings for your entire Quick Sight account, affecting data security and access. When you enable public sharing:   Dashboards can be shared publicly   This setting affects your entire Amazon Web Services account and all Quick Sight users    Before proceeding: Ensure you understand the security implications and have proper IAM permissions configured.  Use the UpdatePublicSharingSettings operation to turn on or turn off the public sharing settings of an Amazon Quick Sight dashboard. To use this operation, turn on session capacity pricing for your Amazon Quick Sight account. Before you can turn on public sharing on your account, make sure to give public sharing permissions to an administrative user in the Identity and Access Management (IAM) console. For more information on using IAM with Amazon Quick Sight, see Using QuickSight with IAM in the Amazon Quick Sight User Guide.
    @Sendable
    @inlinable
    public func updatePublicSharingSettings(_ input: UpdatePublicSharingSettingsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdatePublicSharingSettingsResponse {
        try await self.client.execute(
            operation: "UpdatePublicSharingSettings", 
            path: "/accounts/{AwsAccountId}/public-sharing-settings", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    ///  This API controls public sharing settings for your entire Quick Sight account, affecting data security and access. When you enable public sharing:   Dashboards can be shared publicly   This setting affects your entire Amazon Web Services account and all Quick Sight users    Before proceeding: Ensure you understand the security implications and have proper IAM permissions configured.  Use the UpdatePublicSharingSettings operation to turn on or turn off the public sharing settings of an Amazon Quick Sight dashboard. To use this operation, turn on session capacity pricing for your Amazon Quick Sight account. Before you can turn on public sharing on your account, make sure to give public sharing permissions to an administrative user in the Identity and Access Management (IAM) console. For more information on using IAM with Amazon Quick Sight, see Using QuickSight with IAM in the Amazon Quick Sight User Guide.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID associated with your Amazon Quick Sight subscription.
    ///   - publicSharingEnabled: A Boolean value that indicates whether public sharing is turned on for an QuickSight account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updatePublicSharingSettings(
        awsAccountId: String,
        publicSharingEnabled: Bool? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdatePublicSharingSettingsResponse {
        let input = UpdatePublicSharingSettingsRequest(
            awsAccountId: awsAccountId, 
            publicSharingEnabled: publicSharingEnabled
        )
        return try await self.updatePublicSharingSettings(input, logger: logger)
    }

    /// Updates a personalization configuration.
    @Sendable
    @inlinable
    public func updateQPersonalizationConfiguration(_ input: UpdateQPersonalizationConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateQPersonalizationConfigurationResponse {
        try await self.client.execute(
            operation: "UpdateQPersonalizationConfiguration", 
            path: "/accounts/{AwsAccountId}/q-personalization-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a personalization configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account account that contains the personalization configuration that the user wants to update.
    ///   - personalizationMode: An option to allow Amazon Quick Sight to customize data stories with user specific metadata, specifically location and job information, in your IAM Identity Center instance.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateQPersonalizationConfiguration(
        awsAccountId: String,
        personalizationMode: PersonalizationMode,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateQPersonalizationConfigurationResponse {
        let input = UpdateQPersonalizationConfigurationRequest(
            awsAccountId: awsAccountId, 
            personalizationMode: personalizationMode
        )
        return try await self.updateQPersonalizationConfiguration(input, logger: logger)
    }

    /// Updates the state of a Quick Sight Q Search configuration.
    @Sendable
    @inlinable
    public func updateQuickSightQSearchConfiguration(_ input: UpdateQuickSightQSearchConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateQuickSightQSearchConfigurationResponse {
        try await self.client.execute(
            operation: "UpdateQuickSightQSearchConfiguration", 
            path: "/accounts/{AwsAccountId}/quicksight-q-search-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the state of a Quick Sight Q Search configuration.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the Quick Sight Q Search configuration that you want to update.
    ///   - qSearchStatus: The status of the Quick Sight Q Search configuration that the user wants to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateQuickSightQSearchConfiguration(
        awsAccountId: String,
        qSearchStatus: QSearchStatus,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateQuickSightQSearchConfigurationResponse {
        let input = UpdateQuickSightQSearchConfigurationRequest(
            awsAccountId: awsAccountId, 
            qSearchStatus: qSearchStatus
        )
        return try await self.updateQuickSightQSearchConfiguration(input, logger: logger)
    }

    /// Updates a refresh schedule for a dataset.
    @Sendable
    @inlinable
    public func updateRefreshSchedule(_ input: UpdateRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateRefreshScheduleResponse {
        try await self.client.execute(
            operation: "UpdateRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a refresh schedule for a dataset.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset.
    ///   - schedule: The refresh schedule.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateRefreshSchedule(
        awsAccountId: String,
        dataSetId: String,
        schedule: RefreshSchedule,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateRefreshScheduleResponse {
        let input = UpdateRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            schedule: schedule
        )
        return try await self.updateRefreshSchedule(input, logger: logger)
    }

    /// Updates the custom permissions that are associated with a role.
    @Sendable
    @inlinable
    public func updateRoleCustomPermission(_ input: UpdateRoleCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateRoleCustomPermissionResponse {
        try await self.client.execute(
            operation: "UpdateRoleCustomPermission", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the custom permissions that are associated with a role.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - customPermissionsName: The name of the custom permission that you want to update the role with.
    ///   - namespace: The namespace that contains the role that you want to update.
    ///   - role: The name of role tht you want to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateRoleCustomPermission(
        awsAccountId: String,
        customPermissionsName: String,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateRoleCustomPermissionResponse {
        let input = UpdateRoleCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            customPermissionsName: customPermissionsName, 
            namespace: namespace, 
            role: role
        )
        return try await self.updateRoleCustomPermission(input, logger: logger)
    }

    /// Updates the SPICE capacity configuration for a Quick Sight account.
    @Sendable
    @inlinable
    public func updateSPICECapacityConfiguration(_ input: UpdateSPICECapacityConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateSPICECapacityConfigurationResponse {
        try await self.client.execute(
            operation: "UpdateSPICECapacityConfiguration", 
            path: "/accounts/{AwsAccountId}/spice-capacity-configuration", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the SPICE capacity configuration for a Quick Sight account.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the SPICE configuration that you want to update.
    ///   - purchaseMode: Determines how SPICE capacity can be purchased. The following options are available.     MANUAL: SPICE capacity can only be purchased manually.    AUTO_PURCHASE: Extra SPICE capacity is automatically purchased on your behalf as needed. SPICE capacity can also be purchased manually with this option.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateSPICECapacityConfiguration(
        awsAccountId: String,
        purchaseMode: PurchaseMode,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateSPICECapacityConfigurationResponse {
        let input = UpdateSPICECapacityConfigurationRequest(
            awsAccountId: awsAccountId, 
            purchaseMode: purchaseMode
        )
        return try await self.updateSPICECapacityConfiguration(input, logger: logger)
    }

    /// Updates a template from an existing Amazon Quick Sight analysis or another template.
    @Sendable
    @inlinable
    public func updateTemplate(_ input: UpdateTemplateRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTemplateResponse {
        try await self.client.execute(
            operation: "UpdateTemplate", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a template from an existing Amazon Quick Sight analysis or another template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template that you're updating.
    ///   - definition: The definition of a template. A definition is the data model of all features in a Dashboard, Template, or Analysis.
    ///   - name: The name for the template.
    ///   - sourceEntity: The entity that you are using as a source when you update the template. In
    ///   - templateId: The ID for the template.
    ///   - validationStrategy: The option to relax the validation needed to update a template with definition objects. This skips the validation step for specific errors.
    ///   - versionDescription: A description of the current template version that is being updated. Every time you call
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTemplate(
        awsAccountId: String,
        definition: TemplateVersionDefinition? = nil,
        name: String? = nil,
        sourceEntity: TemplateSourceEntity? = nil,
        templateId: String,
        validationStrategy: ValidationStrategy? = nil,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTemplateResponse {
        let input = UpdateTemplateRequest(
            awsAccountId: awsAccountId, 
            definition: definition, 
            name: name, 
            sourceEntity: sourceEntity, 
            templateId: templateId, 
            validationStrategy: validationStrategy, 
            versionDescription: versionDescription
        )
        return try await self.updateTemplate(input, logger: logger)
    }

    /// Updates the template alias of a template.
    @Sendable
    @inlinable
    public func updateTemplateAlias(_ input: UpdateTemplateAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTemplateAliasResponse {
        try await self.client.execute(
            operation: "UpdateTemplateAlias", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the template alias of a template.
    ///
    /// Parameters:
    ///   - aliasName: The alias of the template that you want to update. If you name a specific alias, you update
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template alias that you're updating.
    ///   - templateId: The ID for the template.
    ///   - templateVersionNumber: The version number of the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTemplateAlias(
        aliasName: String,
        awsAccountId: String,
        templateId: String,
        templateVersionNumber: Int64,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTemplateAliasResponse {
        let input = UpdateTemplateAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            templateId: templateId, 
            templateVersionNumber: templateVersionNumber
        )
        return try await self.updateTemplateAlias(input, logger: logger)
    }

    /// Updates the resource permissions for a template.
    @Sendable
    @inlinable
    public func updateTemplatePermissions(_ input: UpdateTemplatePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTemplatePermissionsResponse {
        try await self.client.execute(
            operation: "UpdateTemplatePermissions", 
            path: "/accounts/{AwsAccountId}/templates/{TemplateId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the resource permissions for a template.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template.
    ///   - grantPermissions: A list of resource permissions to be granted on the template.
    ///   - revokePermissions: A list of resource permissions to be revoked from the template.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTemplatePermissions(
        awsAccountId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTemplatePermissionsResponse {
        let input = UpdateTemplatePermissionsRequest(
            awsAccountId: awsAccountId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions, 
            templateId: templateId
        )
        return try await self.updateTemplatePermissions(input, logger: logger)
    }

    /// Updates a theme.
    @Sendable
    @inlinable
    public func updateTheme(_ input: UpdateThemeRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateThemeResponse {
        try await self.client.execute(
            operation: "UpdateTheme", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a theme.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme that you're updating.
    ///   - baseThemeId: The theme ID, defined by Amazon Quick Sight, that a custom theme inherits from.
    ///   - configuration: The theme configuration, which contains the theme display properties.
    ///   - name: The name for the theme.
    ///   - themeId: The ID for the theme.
    ///   - versionDescription: A description of the theme version that you're updating Every time that you call
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTheme(
        awsAccountId: String,
        baseThemeId: String,
        configuration: ThemeConfiguration? = nil,
        name: String? = nil,
        themeId: String,
        versionDescription: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateThemeResponse {
        let input = UpdateThemeRequest(
            awsAccountId: awsAccountId, 
            baseThemeId: baseThemeId, 
            configuration: configuration, 
            name: name, 
            themeId: themeId, 
            versionDescription: versionDescription
        )
        return try await self.updateTheme(input, logger: logger)
    }

    /// Updates an alias of a theme.
    @Sendable
    @inlinable
    public func updateThemeAlias(_ input: UpdateThemeAliasRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateThemeAliasResponse {
        try await self.client.execute(
            operation: "UpdateThemeAlias", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an alias of a theme.
    ///
    /// Parameters:
    ///   - aliasName: The name of the theme alias that you want to update.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme alias that you're updating.
    ///   - themeId: The ID for the theme.
    ///   - themeVersionNumber: The version number of the theme that the alias should reference.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateThemeAlias(
        aliasName: String,
        awsAccountId: String,
        themeId: String,
        themeVersionNumber: Int64,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateThemeAliasResponse {
        let input = UpdateThemeAliasRequest(
            aliasName: aliasName, 
            awsAccountId: awsAccountId, 
            themeId: themeId, 
            themeVersionNumber: themeVersionNumber
        )
        return try await self.updateThemeAlias(input, logger: logger)
    }

    /// Updates the resource permissions for a theme. Permissions apply to the action to grant or
    /// 			revoke permissions on, for example "quicksight:DescribeTheme". Theme permissions apply in groupings. Valid groupings include the following for the three
    /// 			levels of permissions, which are user, owner, or no permissions:    User    "quicksight:DescribeTheme"     "quicksight:DescribeThemeAlias"     "quicksight:ListThemeAliases"     "quicksight:ListThemeVersions"      Owner    "quicksight:DescribeTheme"     "quicksight:DescribeThemeAlias"     "quicksight:ListThemeAliases"     "quicksight:ListThemeVersions"     "quicksight:DeleteTheme"     "quicksight:UpdateTheme"     "quicksight:CreateThemeAlias"     "quicksight:DeleteThemeAlias"     "quicksight:UpdateThemeAlias"     "quicksight:UpdateThemePermissions"     "quicksight:DescribeThemePermissions"      To specify no permissions, omit the permissions list.
    @Sendable
    @inlinable
    public func updateThemePermissions(_ input: UpdateThemePermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateThemePermissionsResponse {
        try await self.client.execute(
            operation: "UpdateThemePermissions", 
            path: "/accounts/{AwsAccountId}/themes/{ThemeId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the resource permissions for a theme. Permissions apply to the action to grant or
    /// 			revoke permissions on, for example "quicksight:DescribeTheme". Theme permissions apply in groupings. Valid groupings include the following for the three
    /// 			levels of permissions, which are user, owner, or no permissions:    User    "quicksight:DescribeTheme"     "quicksight:DescribeThemeAlias"     "quicksight:ListThemeAliases"     "quicksight:ListThemeVersions"      Owner    "quicksight:DescribeTheme"     "quicksight:DescribeThemeAlias"     "quicksight:ListThemeAliases"     "quicksight:ListThemeVersions"     "quicksight:DeleteTheme"     "quicksight:UpdateTheme"     "quicksight:CreateThemeAlias"     "quicksight:DeleteThemeAlias"     "quicksight:UpdateThemeAlias"     "quicksight:UpdateThemePermissions"     "quicksight:DescribeThemePermissions"      To specify no permissions, omit the permissions list.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the theme.
    ///   - grantPermissions: A list of resource permissions to be granted for the theme.
    ///   - revokePermissions: A list of resource permissions to be revoked from the theme.
    ///   - themeId: The ID for the theme.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateThemePermissions(
        awsAccountId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateThemePermissionsResponse {
        let input = UpdateThemePermissionsRequest(
            awsAccountId: awsAccountId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions, 
            themeId: themeId
        )
        return try await self.updateThemePermissions(input, logger: logger)
    }

    /// Updates a topic.
    @Sendable
    @inlinable
    public func updateTopic(_ input: UpdateTopicRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTopicResponse {
        try await self.client.execute(
            operation: "UpdateTopic", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want to update.
    ///   - customInstructions: Custom instructions for the topic.
    ///   - topic: The definition of the topic that you want to update.
    ///   - topicId: The ID of the topic that you want to modify. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTopic(
        awsAccountId: String,
        customInstructions: CustomInstructions? = nil,
        topic: TopicDetails,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTopicResponse {
        let input = UpdateTopicRequest(
            awsAccountId: awsAccountId, 
            customInstructions: customInstructions, 
            topic: topic, 
            topicId: topicId
        )
        return try await self.updateTopic(input, logger: logger)
    }

    /// Updates the permissions of a topic.
    @Sendable
    @inlinable
    public func updateTopicPermissions(_ input: UpdateTopicPermissionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTopicPermissionsResponse {
        try await self.client.execute(
            operation: "UpdateTopicPermissions", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/permissions", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the permissions of a topic.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want to update the permissions for.
    ///   - grantPermissions: The resource permissions that you want to grant to the topic.
    ///   - revokePermissions: The resource permissions that you want to revoke from the topic.
    ///   - topicId: The ID of the topic that you want to modify. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTopicPermissions(
        awsAccountId: String,
        grantPermissions: [ResourcePermission]? = nil,
        revokePermissions: [ResourcePermission]? = nil,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTopicPermissionsResponse {
        let input = UpdateTopicPermissionsRequest(
            awsAccountId: awsAccountId, 
            grantPermissions: grantPermissions, 
            revokePermissions: revokePermissions, 
            topicId: topicId
        )
        return try await self.updateTopicPermissions(input, logger: logger)
    }

    /// Updates a topic refresh schedule.
    @Sendable
    @inlinable
    public func updateTopicRefreshSchedule(_ input: UpdateTopicRefreshScheduleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateTopicRefreshScheduleResponse {
        try await self.client.execute(
            operation: "UpdateTopicRefreshSchedule", 
            path: "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a topic refresh schedule.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic whose refresh schedule you want to update.
    ///   - datasetId: The ID of the dataset.
    ///   - refreshSchedule: The definition of a refresh schedule.
    ///   - topicId: The ID of the topic that you want to modify. This ID is unique per Amazon Web Services Region for each Amazon Web Services account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateTopicRefreshSchedule(
        awsAccountId: String,
        datasetId: String,
        refreshSchedule: TopicRefreshSchedule,
        topicId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateTopicRefreshScheduleResponse {
        let input = UpdateTopicRefreshScheduleRequest(
            awsAccountId: awsAccountId, 
            datasetId: datasetId, 
            refreshSchedule: refreshSchedule, 
            topicId: topicId
        )
        return try await self.updateTopicRefreshSchedule(input, logger: logger)
    }

    /// Updates an Amazon Quick Sight user.
    @Sendable
    @inlinable
    public func updateUser(_ input: UpdateUserRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateUserResponse {
        try await self.client.execute(
            operation: "UpdateUser", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates an Amazon Quick Sight user.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - customFederationProviderUrl: The URL of the custom OpenID Connect (OIDC) provider that provides identity to let a user federate into Quick Sight with an associated Identity and Access Management(IAM) role. This parameter should only be used when ExternalLoginFederationProviderType parameter is set to CUSTOM_OIDC.
    ///   - customPermissionsName: (Enterprise edition only) The name of the custom permissions profile that you want to assign to this user. Customized permissions allows you to control a user's access by restricting access the following operations:   Create and update data sources   Create and update datasets   Create and update email reports   Subscribe to email reports   A set of custom permissions includes any combination of these restrictions. Currently, you need to create the profile names for custom permission sets by using the Quick Sight console. Then, you use the RegisterUser API operation to assign the named set of permissions to a Quick Sight user.  Quick Sight custom permissions are applied through IAM policies. Therefore, they override the permissions typically granted by assigning Quick Sight users to one of the default security cohorts in Quick Sight (admin, author, reader). This feature is available only to Quick Sight Enterprise edition subscriptions.
    ///   - email: The email address of the user that you want to update.
    ///   - externalLoginFederationProviderType: The type of supported external login provider that provides identity to let a user federate into Quick Sight with an associated Identity and Access Management(IAM) role. The type of supported external login provider can be one of the following.    COGNITO: Amazon Cognito. The provider URL is cognito-identity.amazonaws.com. When choosing the COGNITO provider type, don’t use the "CustomFederationProviderUrl" parameter which is only needed when the external provider is custom.    CUSTOM_OIDC: Custom OpenID Connect (OIDC) provider. When choosing CUSTOM_OIDC type, use the CustomFederationProviderUrl parameter to provide the custom OIDC provider URL.    NONE: This clears all the previously saved external login information for a user. Use the  DescribeUser  API operation to check the external login information.
    ///   - externalLoginId: The identity ID for a user in the external login provider.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - role: The Amazon Quick Sight role of the user. The role can be one of the
    ///   - unapplyCustomPermissions: A flag that you use to indicate that you want to remove all custom permissions from this user. Using this parameter resets the user to the state it was in before a custom permissions profile was applied. This parameter defaults to NULL and it doesn't accept any other value.
    ///   - userName: The Amazon Quick Sight user name that you want to update.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateUser(
        awsAccountId: String,
        customFederationProviderUrl: String? = nil,
        customPermissionsName: String? = nil,
        email: String,
        externalLoginFederationProviderType: String? = nil,
        externalLoginId: String? = nil,
        namespace: String,
        role: UserRole,
        unapplyCustomPermissions: Bool? = nil,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateUserResponse {
        let input = UpdateUserRequest(
            awsAccountId: awsAccountId, 
            customFederationProviderUrl: customFederationProviderUrl, 
            customPermissionsName: customPermissionsName, 
            email: email, 
            externalLoginFederationProviderType: externalLoginFederationProviderType, 
            externalLoginId: externalLoginId, 
            namespace: namespace, 
            role: role, 
            unapplyCustomPermissions: unapplyCustomPermissions, 
            userName: userName
        )
        return try await self.updateUser(input, logger: logger)
    }

    /// Updates a custom permissions profile for a user.
    @Sendable
    @inlinable
    public func updateUserCustomPermission(_ input: UpdateUserCustomPermissionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateUserCustomPermissionResponse {
        try await self.client.execute(
            operation: "UpdateUserCustomPermission", 
            path: "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/custom-permission", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a custom permissions profile for a user.
    ///
    /// Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permission configuration that you want to update.
    ///   - customPermissionsName: The name of the custom permissions that you want to update.
    ///   - namespace: The namespace that the user belongs to.
    ///   - userName: The username of the user that you want to update custom permissions for.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateUserCustomPermission(
        awsAccountId: String,
        customPermissionsName: String,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateUserCustomPermissionResponse {
        let input = UpdateUserCustomPermissionRequest(
            awsAccountId: awsAccountId, 
            customPermissionsName: customPermissionsName, 
            namespace: namespace, 
            userName: userName
        )
        return try await self.updateUserCustomPermission(input, logger: logger)
    }

    /// Updates a VPC connection.
    @Sendable
    @inlinable
    public func updateVPCConnection(_ input: UpdateVPCConnectionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateVPCConnectionResponse {
        try await self.client.execute(
            operation: "UpdateVPCConnection", 
            path: "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a VPC connection.
    ///
    /// Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account that contains the VPC connection that
    ///   - dnsResolvers: A list of IP addresses of DNS resolver endpoints for the VPC connection.
    ///   - name: The display name for the VPC connection.
    ///   - roleArn: An IAM role associated with the VPC connection.
    ///   - securityGroupIds: A list of security group IDs for the VPC connection.
    ///   - subnetIds: A list of subnet IDs for the VPC connection.
    ///   - vpcConnectionId: The ID of the VPC connection that
    ///   - logger: Logger use during operation
    @inlinable
    public func updateVPCConnection(
        awsAccountId: String,
        dnsResolvers: [String]? = nil,
        name: String,
        roleArn: String,
        securityGroupIds: [String],
        subnetIds: [String],
        vpcConnectionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateVPCConnectionResponse {
        let input = UpdateVPCConnectionRequest(
            awsAccountId: awsAccountId, 
            dnsResolvers: dnsResolvers, 
            name: name, 
            roleArn: roleArn, 
            securityGroupIds: securityGroupIds, 
            subnetIds: subnetIds, 
            vpcConnectionId: vpcConnectionId
        )
        return try await self.updateVPCConnection(input, logger: logger)
    }
}

extension QuickSight {
    /// Initializer required by `AWSService.with(middlewares:timeout:byteBufferAllocator:options)`. You are not able to use this initializer directly as there are not public
    /// initializers for `AWSServiceConfig.Patch`. Please use `AWSService.with(middlewares:timeout:byteBufferAllocator:options)` instead.
    public init(from: QuickSight, patch: AWSServiceConfig.Patch) {
        self.client = from.client
        self.config = from.config.with(patch: patch)
    }
}

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension QuickSight {
    /// Return PaginatorSequence for operation ``describeFolderPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func describeFolderPermissionsPaginator(
        _ input: DescribeFolderPermissionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<DescribeFolderPermissionsRequest, DescribeFolderPermissionsResponse> {
        return .init(
            input: input,
            command: self.describeFolderPermissions,
            inputKey: \DescribeFolderPermissionsRequest.nextToken,
            outputKey: \DescribeFolderPermissionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``describeFolderPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the folder whose permissions you want described.
    ///   - logger: Logger used for logging
    @inlinable
    public func describeFolderPermissionsPaginator(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<DescribeFolderPermissionsRequest, DescribeFolderPermissionsResponse> {
        let input = DescribeFolderPermissionsRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.describeFolderPermissionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``describeFolderResolvedPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func describeFolderResolvedPermissionsPaginator(
        _ input: DescribeFolderResolvedPermissionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<DescribeFolderResolvedPermissionsRequest, DescribeFolderResolvedPermissionsResponse> {
        return .init(
            input: input,
            command: self.describeFolderResolvedPermissions,
            inputKey: \DescribeFolderResolvedPermissionsRequest.nextToken,
            outputKey: \DescribeFolderResolvedPermissionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``describeFolderResolvedPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the folder whose permissions you want described.
    ///   - logger: Logger used for logging
    @inlinable
    public func describeFolderResolvedPermissionsPaginator(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        namespace: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<DescribeFolderResolvedPermissionsRequest, DescribeFolderResolvedPermissionsResponse> {
        let input = DescribeFolderResolvedPermissionsRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.describeFolderResolvedPermissionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listActionConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listActionConnectorsPaginator(
        _ input: ListActionConnectorsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListActionConnectorsRequest, ListActionConnectorsResponse> {
        return .init(
            input: input,
            command: self.listActionConnectors,
            inputKey: \ListActionConnectorsRequest.nextToken,
            outputKey: \ListActionConnectorsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listActionConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID for which to list action connectors.
    ///   - maxResults: The maximum number of action connectors to return in a single response. Valid range is 1 to 100.
    ///   - logger: Logger used for logging
    @inlinable
    public func listActionConnectorsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListActionConnectorsRequest, ListActionConnectorsResponse> {
        let input = ListActionConnectorsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listActionConnectorsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listAnalyses(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listAnalysesPaginator(
        _ input: ListAnalysesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListAnalysesRequest, ListAnalysesResponse> {
        return .init(
            input: input,
            command: self.listAnalyses,
            inputKey: \ListAnalysesRequest.nextToken,
            outputKey: \ListAnalysesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listAnalyses(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analyses.
    ///   - maxResults: The maximum number of results to return.
    ///   - logger: Logger used for logging
    @inlinable
    public func listAnalysesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListAnalysesRequest, ListAnalysesResponse> {
        let input = ListAnalysesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listAnalysesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listAssetBundleExportJobs(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listAssetBundleExportJobsPaginator(
        _ input: ListAssetBundleExportJobsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListAssetBundleExportJobsRequest, ListAssetBundleExportJobsResponse> {
        return .init(
            input: input,
            command: self.listAssetBundleExportJobs,
            inputKey: \ListAssetBundleExportJobsRequest.nextToken,
            outputKey: \ListAssetBundleExportJobsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listAssetBundleExportJobs(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the export jobs were executed in.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listAssetBundleExportJobsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListAssetBundleExportJobsRequest, ListAssetBundleExportJobsResponse> {
        let input = ListAssetBundleExportJobsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listAssetBundleExportJobsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listAssetBundleImportJobs(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listAssetBundleImportJobsPaginator(
        _ input: ListAssetBundleImportJobsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListAssetBundleImportJobsRequest, ListAssetBundleImportJobsResponse> {
        return .init(
            input: input,
            command: self.listAssetBundleImportJobs,
            inputKey: \ListAssetBundleImportJobsRequest.nextToken,
            outputKey: \ListAssetBundleImportJobsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listAssetBundleImportJobs(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that the import jobs were executed in.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listAssetBundleImportJobsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListAssetBundleImportJobsRequest, ListAssetBundleImportJobsResponse> {
        let input = ListAssetBundleImportJobsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listAssetBundleImportJobsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listBrands(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listBrandsPaginator(
        _ input: ListBrandsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListBrandsRequest, ListBrandsResponse> {
        return .init(
            input: input,
            command: self.listBrands,
            inputKey: \ListBrandsRequest.nextToken,
            outputKey: \ListBrandsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listBrands(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that owns the brands that you want to list.
    ///   - maxResults: The maximum number of results to be returned in a single request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listBrandsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListBrandsRequest, ListBrandsResponse> {
        let input = ListBrandsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listBrandsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listCustomPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listCustomPermissionsPaginator(
        _ input: ListCustomPermissionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListCustomPermissionsRequest, ListCustomPermissionsResponse> {
        return .init(
            input: input,
            command: self.listCustomPermissions,
            inputKey: \ListCustomPermissionsRequest.nextToken,
            outputKey: \ListCustomPermissionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listCustomPermissions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the custom permissions profiles that you want to list.
    ///   - maxResults: The maximum number of results to return.
    ///   - logger: Logger used for logging
    @inlinable
    public func listCustomPermissionsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListCustomPermissionsRequest, ListCustomPermissionsResponse> {
        let input = ListCustomPermissionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listCustomPermissionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listDashboardVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listDashboardVersionsPaginator(
        _ input: ListDashboardVersionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListDashboardVersionsRequest, ListDashboardVersionsResponse> {
        return .init(
            input: input,
            command: self.listDashboardVersions,
            inputKey: \ListDashboardVersionsRequest.nextToken,
            outputKey: \ListDashboardVersionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listDashboardVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboard that you're listing versions for.
    ///   - dashboardId: The ID for the dashboard.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listDashboardVersionsPaginator(
        awsAccountId: String,
        dashboardId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListDashboardVersionsRequest, ListDashboardVersionsResponse> {
        let input = ListDashboardVersionsRequest(
            awsAccountId: awsAccountId, 
            dashboardId: dashboardId, 
            maxResults: maxResults
        )
        return self.listDashboardVersionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listDashboards(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listDashboardsPaginator(
        _ input: ListDashboardsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListDashboardsRequest, ListDashboardsResponse> {
        return .init(
            input: input,
            command: self.listDashboards,
            inputKey: \ListDashboardsRequest.nextToken,
            outputKey: \ListDashboardsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listDashboards(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the dashboards that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listDashboardsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListDashboardsRequest, ListDashboardsResponse> {
        let input = ListDashboardsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listDashboardsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listDataSets(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listDataSetsPaginator(
        _ input: ListDataSetsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListDataSetsRequest, ListDataSetsResponse> {
        return .init(
            input: input,
            command: self.listDataSets,
            inputKey: \ListDataSetsRequest.nextToken,
            outputKey: \ListDataSetsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listDataSets(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listDataSetsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListDataSetsRequest, ListDataSetsResponse> {
        let input = ListDataSetsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listDataSetsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listDataSources(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listDataSourcesPaginator(
        _ input: ListDataSourcesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListDataSourcesRequest, ListDataSourcesResponse> {
        return .init(
            input: input,
            command: self.listDataSources,
            inputKey: \ListDataSourcesRequest.nextToken,
            outputKey: \ListDataSourcesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listDataSources(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listDataSourcesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListDataSourcesRequest, ListDataSourcesResponse> {
        let input = ListDataSourcesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listDataSourcesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listFlows(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listFlowsPaginator(
        _ input: ListFlowsInput,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListFlowsInput, ListFlowsOutput> {
        return .init(
            input: input,
            command: self.listFlows,
            inputKey: \ListFlowsInput.nextToken,
            outputKey: \ListFlowsOutput.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listFlows(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the flow list that you are getting.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listFlowsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListFlowsInput, ListFlowsOutput> {
        let input = ListFlowsInput(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listFlowsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listFolderMembers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listFolderMembersPaginator(
        _ input: ListFolderMembersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListFolderMembersRequest, ListFolderMembersResponse> {
        return .init(
            input: input,
            command: self.listFolderMembers,
            inputKey: \ListFolderMembersRequest.nextToken,
            outputKey: \ListFolderMembersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listFolderMembers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - folderId: The ID of the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listFolderMembersPaginator(
        awsAccountId: String,
        folderId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListFolderMembersRequest, ListFolderMembersResponse> {
        let input = ListFolderMembersRequest(
            awsAccountId: awsAccountId, 
            folderId: folderId, 
            maxResults: maxResults
        )
        return self.listFolderMembersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listFolders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listFoldersPaginator(
        _ input: ListFoldersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListFoldersRequest, ListFoldersResponse> {
        return .init(
            input: input,
            command: self.listFolders,
            inputKey: \ListFoldersRequest.nextToken,
            outputKey: \ListFoldersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listFolders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listFoldersPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListFoldersRequest, ListFoldersResponse> {
        let input = ListFoldersRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listFoldersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listFoldersForResource(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listFoldersForResourcePaginator(
        _ input: ListFoldersForResourceRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListFoldersForResourceRequest, ListFoldersForResourceResponse> {
        return .init(
            input: input,
            command: self.listFoldersForResource,
            inputKey: \ListFoldersForResourceRequest.nextToken,
            outputKey: \ListFoldersForResourceResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listFoldersForResource(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the resource.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - resourceArn: The Amazon Resource Name (ARN) the resource whose folders you need to list.
    ///   - logger: Logger used for logging
    @inlinable
    public func listFoldersForResourcePaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        resourceArn: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListFoldersForResourceRequest, ListFoldersForResourceResponse> {
        let input = ListFoldersForResourceRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            resourceArn: resourceArn
        )
        return self.listFoldersForResourcePaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listGroupMemberships(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listGroupMembershipsPaginator(
        _ input: ListGroupMembershipsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListGroupMembershipsRequest, ListGroupMembershipsResponse> {
        return .init(
            input: input,
            command: self.listGroupMemberships,
            inputKey: \ListGroupMembershipsRequest.nextToken,
            outputKey: \ListGroupMembershipsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listGroupMemberships(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - groupName: The name of the group that you want to see a membership list of.
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace of the group that you want a list of users from.
    ///   - logger: Logger used for logging
    @inlinable
    public func listGroupMembershipsPaginator(
        awsAccountId: String,
        groupName: String,
        maxResults: Int? = nil,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListGroupMembershipsRequest, ListGroupMembershipsResponse> {
        let input = ListGroupMembershipsRequest(
            awsAccountId: awsAccountId, 
            groupName: groupName, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.listGroupMembershipsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listGroupsPaginator(
        _ input: ListGroupsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListGroupsRequest, ListGroupsResponse> {
        return .init(
            input: input,
            command: self.listGroups,
            inputKey: \ListGroupsRequest.nextToken,
            outputKey: \ListGroupsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the
    ///   - maxResults: The maximum number of results to return.
    ///   - namespace: The namespace that you want a list of groups from.
    ///   - logger: Logger used for logging
    @inlinable
    public func listGroupsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListGroupsRequest, ListGroupsResponse> {
        let input = ListGroupsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.listGroupsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listIAMPolicyAssignments(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listIAMPolicyAssignmentsPaginator(
        _ input: ListIAMPolicyAssignmentsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListIAMPolicyAssignmentsRequest, ListIAMPolicyAssignmentsResponse> {
        return .init(
            input: input,
            command: self.listIAMPolicyAssignments,
            inputKey: \ListIAMPolicyAssignmentsRequest.nextToken,
            outputKey: \ListIAMPolicyAssignmentsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listIAMPolicyAssignments(_:logger:)``.
    ///
    /// - Parameters:
    ///   - assignmentStatus: The status of the assignments.
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains these IAM policy
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace for the assignments.
    ///   - logger: Logger used for logging
    @inlinable
    public func listIAMPolicyAssignmentsPaginator(
        assignmentStatus: AssignmentStatus? = nil,
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListIAMPolicyAssignmentsRequest, ListIAMPolicyAssignmentsResponse> {
        let input = ListIAMPolicyAssignmentsRequest(
            assignmentStatus: assignmentStatus, 
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.listIAMPolicyAssignmentsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listIAMPolicyAssignmentsForUser(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listIAMPolicyAssignmentsForUserPaginator(
        _ input: ListIAMPolicyAssignmentsForUserRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListIAMPolicyAssignmentsForUserRequest, ListIAMPolicyAssignmentsForUserResponse> {
        return .init(
            input: input,
            command: self.listIAMPolicyAssignmentsForUser,
            inputKey: \ListIAMPolicyAssignmentsForUserRequest.nextToken,
            outputKey: \ListIAMPolicyAssignmentsForUserResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listIAMPolicyAssignmentsForUser(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the assignments.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - namespace: The namespace of the assignment.
    ///   - userName: The name of the user.
    ///   - logger: Logger used for logging
    @inlinable
    public func listIAMPolicyAssignmentsForUserPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListIAMPolicyAssignmentsForUserRequest, ListIAMPolicyAssignmentsForUserResponse> {
        let input = ListIAMPolicyAssignmentsForUserRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            userName: userName
        )
        return self.listIAMPolicyAssignmentsForUserPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listIngestions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listIngestionsPaginator(
        _ input: ListIngestionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListIngestionsRequest, ListIngestionsResponse> {
        return .init(
            input: input,
            command: self.listIngestions,
            inputKey: \ListIngestionsRequest.nextToken,
            outputKey: \ListIngestionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listIngestions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - dataSetId: The ID of the dataset used in the ingestion.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listIngestionsPaginator(
        awsAccountId: String,
        dataSetId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListIngestionsRequest, ListIngestionsResponse> {
        let input = ListIngestionsRequest(
            awsAccountId: awsAccountId, 
            dataSetId: dataSetId, 
            maxResults: maxResults
        )
        return self.listIngestionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listNamespaces(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listNamespacesPaginator(
        _ input: ListNamespacesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListNamespacesRequest, ListNamespacesResponse> {
        return .init(
            input: input,
            command: self.listNamespaces,
            inputKey: \ListNamespacesRequest.nextToken,
            outputKey: \ListNamespacesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listNamespaces(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the Quick Sight namespaces that you want to list.
    ///   - maxResults: The maximum number of results to return.
    ///   - logger: Logger used for logging
    @inlinable
    public func listNamespacesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListNamespacesRequest, ListNamespacesResponse> {
        let input = ListNamespacesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listNamespacesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listRoleMemberships(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listRoleMembershipsPaginator(
        _ input: ListRoleMembershipsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListRoleMembershipsRequest, ListRoleMembershipsResponse> {
        return .init(
            input: input,
            command: self.listRoleMemberships,
            inputKey: \ListRoleMembershipsRequest.nextToken,
            outputKey: \ListRoleMembershipsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listRoleMemberships(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that you want to create a group in. The Amazon Web Services account ID that you provide must be the same Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - maxResults: The maximum number of results to return.
    ///   - namespace: The namespace that includes the role.
    ///   - role: The name of the role.
    ///   - logger: Logger used for logging
    @inlinable
    public func listRoleMembershipsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        role: Role,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListRoleMembershipsRequest, ListRoleMembershipsResponse> {
        let input = ListRoleMembershipsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            role: role
        )
        return self.listRoleMembershipsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listTemplateAliases(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplateAliasesPaginator(
        _ input: ListTemplateAliasesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListTemplateAliasesRequest, ListTemplateAliasesResponse> {
        return .init(
            input: input,
            command: self.listTemplateAliases,
            inputKey: \ListTemplateAliasesRequest.nextToken,
            outputKey: \ListTemplateAliasesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listTemplateAliases(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the template aliases that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplateAliasesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListTemplateAliasesRequest, ListTemplateAliasesResponse> {
        let input = ListTemplateAliasesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            templateId: templateId
        )
        return self.listTemplateAliasesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listTemplateVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplateVersionsPaginator(
        _ input: ListTemplateVersionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListTemplateVersionsRequest, ListTemplateVersionsResponse> {
        return .init(
            input: input,
            command: self.listTemplateVersions,
            inputKey: \ListTemplateVersionsRequest.nextToken,
            outputKey: \ListTemplateVersionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listTemplateVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the templates that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - templateId: The ID for the template.
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplateVersionsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        templateId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListTemplateVersionsRequest, ListTemplateVersionsResponse> {
        let input = ListTemplateVersionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            templateId: templateId
        )
        return self.listTemplateVersionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listTemplates(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplatesPaginator(
        _ input: ListTemplatesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListTemplatesRequest, ListTemplatesResponse> {
        return .init(
            input: input,
            command: self.listTemplates,
            inputKey: \ListTemplatesRequest.nextToken,
            outputKey: \ListTemplatesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listTemplates(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the templates that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listTemplatesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListTemplatesRequest, ListTemplatesResponse> {
        let input = ListTemplatesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listTemplatesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listThemeVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listThemeVersionsPaginator(
        _ input: ListThemeVersionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListThemeVersionsRequest, ListThemeVersionsResponse> {
        return .init(
            input: input,
            command: self.listThemeVersions,
            inputKey: \ListThemeVersionsRequest.nextToken,
            outputKey: \ListThemeVersionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listThemeVersions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the themes that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - themeId: The ID for the theme.
    ///   - logger: Logger used for logging
    @inlinable
    public func listThemeVersionsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        themeId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListThemeVersionsRequest, ListThemeVersionsResponse> {
        let input = ListThemeVersionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            themeId: themeId
        )
        return self.listThemeVersionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listThemes(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listThemesPaginator(
        _ input: ListThemesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListThemesRequest, ListThemesResponse> {
        return .init(
            input: input,
            command: self.listThemes,
            inputKey: \ListThemesRequest.nextToken,
            outputKey: \ListThemesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listThemes(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the themes that you're listing.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - type: The type of themes that you want to list. Valid options include the following:    ALL (default)- Display all existing themes.    CUSTOM - Display only the themes created by people using Amazon Quick Sight.    QUICKSIGHT - Display only the starting themes defined by Quick Sight.
    ///   - logger: Logger used for logging
    @inlinable
    public func listThemesPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        type: ThemeType? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListThemesRequest, ListThemesResponse> {
        let input = ListThemesRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            type: type
        )
        return self.listThemesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listTopics(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listTopicsPaginator(
        _ input: ListTopicsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListTopicsRequest, ListTopicsResponse> {
        return .init(
            input: input,
            command: self.listTopics,
            inputKey: \ListTopicsRequest.nextToken,
            outputKey: \ListTopicsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listTopics(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topics that you want to list.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listTopicsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListTopicsRequest, ListTopicsResponse> {
        let input = ListTopicsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listTopicsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listUserGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listUserGroupsPaginator(
        _ input: ListUserGroupsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListUserGroupsRequest, ListUserGroupsResponse> {
        return .init(
            input: input,
            command: self.listUserGroups,
            inputKey: \ListUserGroupsRequest.nextToken,
            outputKey: \ListUserGroupsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listUserGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID that the user is in. Currently, you use the ID for the Amazon Web Services account
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - userName: The Amazon Quick Sight user name that you want to list group memberships for.
    ///   - logger: Logger used for logging
    @inlinable
    public func listUserGroupsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        userName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListUserGroupsRequest, ListUserGroupsResponse> {
        let input = ListUserGroupsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace, 
            userName: userName
        )
        return self.listUserGroupsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listUsers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listUsersPaginator(
        _ input: ListUsersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListUsersRequest, ListUsersResponse> {
        return .init(
            input: input,
            command: self.listUsers,
            inputKey: \ListUsersRequest.nextToken,
            outputKey: \ListUsersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listUsers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the user is in. Currently, you use the ID for the
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace. Currently, you should set this to default.
    ///   - logger: Logger used for logging
    @inlinable
    public func listUsersPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListUsersRequest, ListUsersResponse> {
        let input = ListUsersRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.listUsersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listVPCConnections(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listVPCConnectionsPaginator(
        _ input: ListVPCConnectionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListVPCConnectionsRequest, ListVPCConnectionsResponse> {
        return .init(
            input: input,
            command: self.listVPCConnections,
            inputKey: \ListVPCConnectionsRequest.nextToken,
            outputKey: \ListVPCConnectionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listVPCConnections(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID of the account that contains the VPC connections
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func listVPCConnectionsPaginator(
        awsAccountId: String,
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListVPCConnectionsRequest, ListVPCConnectionsResponse> {
        let input = ListVPCConnectionsRequest(
            awsAccountId: awsAccountId, 
            maxResults: maxResults
        )
        return self.listVPCConnectionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchActionConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchActionConnectorsPaginator(
        _ input: SearchActionConnectorsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchActionConnectorsRequest, SearchActionConnectorsResponse> {
        return .init(
            input: input,
            command: self.searchActionConnectors,
            inputKey: \SearchActionConnectorsRequest.nextToken,
            outputKey: \SearchActionConnectorsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchActionConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID in which to search for action connectors.
    ///   - filters: The search filters to apply. You can filter by connector name, type, or user permissions. Maximum of one filter is supported.
    ///   - maxResults: The maximum number of action connectors to return in a single response. Valid range is 1 to 100.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchActionConnectorsPaginator(
        awsAccountId: String,
        filters: [ActionConnectorSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchActionConnectorsRequest, SearchActionConnectorsResponse> {
        let input = SearchActionConnectorsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchActionConnectorsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchAnalyses(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchAnalysesPaginator(
        _ input: SearchAnalysesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchAnalysesRequest, SearchAnalysesResponse> {
        return .init(
            input: input,
            command: self.searchAnalyses,
            inputKey: \SearchAnalysesRequest.nextToken,
            outputKey: \SearchAnalysesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchAnalyses(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the analyses that you're searching for.
    ///   - filters: The structure for the search filters that you want to apply to your search.
    ///   - maxResults: The maximum number of results to return.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchAnalysesPaginator(
        awsAccountId: String,
        filters: [AnalysisSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchAnalysesRequest, SearchAnalysesResponse> {
        let input = SearchAnalysesRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchAnalysesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchDashboards(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDashboardsPaginator(
        _ input: SearchDashboardsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchDashboardsRequest, SearchDashboardsResponse> {
        return .init(
            input: input,
            command: self.searchDashboards,
            inputKey: \SearchDashboardsRequest.nextToken,
            outputKey: \SearchDashboardsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchDashboards(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the user whose dashboards you're searching for.
    ///   - filters: The filters to apply to the search. Currently, you can search only by user name, for example, "Filters": [ { "Name": "QUICKSIGHT_USER", "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1" } ]
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDashboardsPaginator(
        awsAccountId: String,
        filters: [DashboardSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchDashboardsRequest, SearchDashboardsResponse> {
        let input = SearchDashboardsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchDashboardsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchDataSets(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDataSetsPaginator(
        _ input: SearchDataSetsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchDataSetsRequest, SearchDataSetsResponse> {
        return .init(
            input: input,
            command: self.searchDataSets,
            inputKey: \SearchDataSetsRequest.nextToken,
            outputKey: \SearchDataSetsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchDataSets(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - filters: The filters to apply to the search.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDataSetsPaginator(
        awsAccountId: String,
        filters: [DataSetSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchDataSetsRequest, SearchDataSetsResponse> {
        let input = SearchDataSetsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchDataSetsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchDataSources(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDataSourcesPaginator(
        _ input: SearchDataSourcesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchDataSourcesRequest, SearchDataSourcesResponse> {
        return .init(
            input: input,
            command: self.searchDataSources,
            inputKey: \SearchDataSourcesRequest.nextToken,
            outputKey: \SearchDataSourcesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchDataSources(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The Amazon Web Services account ID.
    ///   - filters: The filters to apply to the search.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchDataSourcesPaginator(
        awsAccountId: String,
        filters: [DataSourceSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchDataSourcesRequest, SearchDataSourcesResponse> {
        let input = SearchDataSourcesRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchDataSourcesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchFlows(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchFlowsPaginator(
        _ input: SearchFlowsInput,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchFlowsInput, SearchFlowsOutput> {
        return .init(
            input: input,
            command: self.searchFlows,
            inputKey: \SearchFlowsInput.nextToken,
            outputKey: \SearchFlowsOutput.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchFlows(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account where you are searching for flows from.
    ///   - filters: The filters applied to the search when searching for flows in the Amazon Web Services account.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchFlowsPaginator(
        awsAccountId: String,
        filters: [SearchFlowsFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchFlowsInput, SearchFlowsOutput> {
        let input = SearchFlowsInput(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchFlowsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchFolders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchFoldersPaginator(
        _ input: SearchFoldersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchFoldersRequest, SearchFoldersResponse> {
        return .init(
            input: input,
            command: self.searchFolders,
            inputKey: \SearchFoldersRequest.nextToken,
            outputKey: \SearchFoldersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchFolders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that contains the folder.
    ///   - filters: The filters to apply to the search. Currently, you can search only by the parent folder ARN. For example, "Filters": [ { "Name": "PARENT_FOLDER_ARN", "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:folder/folderId" } ].
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchFoldersPaginator(
        awsAccountId: String,
        filters: [FolderSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchFoldersRequest, SearchFoldersResponse> {
        let input = SearchFoldersRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchFoldersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchGroupsPaginator(
        _ input: SearchGroupsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchGroupsRequest, SearchGroupsResponse> {
        return .init(
            input: input,
            command: self.searchGroups,
            inputKey: \SearchGroupsRequest.nextToken,
            outputKey: \SearchGroupsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon Quick Sight account.
    ///   - filters: The structure for the search filters that you want to apply to your search.
    ///   - maxResults: The maximum number of results to return from this request.
    ///   - namespace: The namespace that you want to search.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchGroupsPaginator(
        awsAccountId: String,
        filters: [GroupSearchFilter],
        maxResults: Int? = nil,
        namespace: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchGroupsRequest, SearchGroupsResponse> {
        let input = SearchGroupsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults, 
            namespace: namespace
        )
        return self.searchGroupsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchTopics(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchTopicsPaginator(
        _ input: SearchTopicsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchTopicsRequest, SearchTopicsResponse> {
        return .init(
            input: input,
            command: self.searchTopics,
            inputKey: \SearchTopicsRequest.nextToken,
            outputKey: \SearchTopicsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchTopics(_:logger:)``.
    ///
    /// - Parameters:
    ///   - awsAccountId: The ID of the Amazon Web Services account that contains the topic that you want to find.
    ///   - filters: The filters that you want to use to search for the topic.
    ///   - maxResults: The maximum number of results to be returned per request.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchTopicsPaginator(
        awsAccountId: String,
        filters: [TopicSearchFilter],
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchTopicsRequest, SearchTopicsResponse> {
        let input = SearchTopicsRequest(
            awsAccountId: awsAccountId, 
            filters: filters, 
            maxResults: maxResults
        )
        return self.searchTopicsPaginator(input, logger: logger)
    }
}

extension QuickSight.DescribeFolderPermissionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.DescribeFolderPermissionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            folderId: self.folderId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.DescribeFolderResolvedPermissionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.DescribeFolderResolvedPermissionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            folderId: self.folderId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.ListActionConnectorsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListActionConnectorsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListAnalysesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListAnalysesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListAssetBundleExportJobsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListAssetBundleExportJobsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListAssetBundleImportJobsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListAssetBundleImportJobsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListBrandsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListBrandsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListCustomPermissionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListCustomPermissionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListDashboardVersionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListDashboardVersionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            dashboardId: self.dashboardId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListDashboardsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListDashboardsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListDataSetsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListDataSetsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListDataSourcesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListDataSourcesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListFlowsInput: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListFlowsInput {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListFolderMembersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListFolderMembersRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            folderId: self.folderId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListFoldersForResourceRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListFoldersForResourceRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token,
            resourceArn: self.resourceArn
        )
    }
}

extension QuickSight.ListFoldersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListFoldersRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListGroupMembershipsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListGroupMembershipsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            groupName: self.groupName,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.ListGroupsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListGroupsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.ListIAMPolicyAssignmentsForUserRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListIAMPolicyAssignmentsForUserRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token,
            userName: self.userName
        )
    }
}

extension QuickSight.ListIAMPolicyAssignmentsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListIAMPolicyAssignmentsRequest {
        return .init(
            assignmentStatus: self.assignmentStatus,
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.ListIngestionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListIngestionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            dataSetId: self.dataSetId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListNamespacesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListNamespacesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListRoleMembershipsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListRoleMembershipsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token,
            role: self.role
        )
    }
}

extension QuickSight.ListTemplateAliasesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListTemplateAliasesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token,
            templateId: self.templateId
        )
    }
}

extension QuickSight.ListTemplateVersionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListTemplateVersionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token,
            templateId: self.templateId
        )
    }
}

extension QuickSight.ListTemplatesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListTemplatesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListThemeVersionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListThemeVersionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token,
            themeId: self.themeId
        )
    }
}

extension QuickSight.ListThemesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListThemesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token,
            type: self.type
        )
    }
}

extension QuickSight.ListTopicsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListTopicsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.ListUserGroupsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListUserGroupsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token,
            userName: self.userName
        )
    }
}

extension QuickSight.ListUsersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListUsersRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.ListVPCConnectionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.ListVPCConnectionsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchActionConnectorsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchActionConnectorsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchAnalysesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchAnalysesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchDashboardsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchDashboardsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchDataSetsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchDataSetsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchDataSourcesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchDataSourcesRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchFlowsInput: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchFlowsInput {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchFoldersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchFoldersRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension QuickSight.SearchGroupsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchGroupsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            namespace: self.namespace,
            nextToken: token
        )
    }
}

extension QuickSight.SearchTopicsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> QuickSight.SearchTopicsRequest {
        return .init(
            awsAccountId: self.awsAccountId,
            filters: self.filters,
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}
